一个plsql中的插入数据问题

you896 2010-09-10 10:04:50
不知道大家遇没遇到过往一个表格里面插入数据却插不进去的情况。我用语句insert into mid select XX 往mid表插数据,显示mid表为空。后来我新建一个和mid表同样结构的新表aa,同时用insert into aa select XX往aa插入数据,却显示aa表有大量数据。谁知道这种情况说下吧。。谢谢。
...全文
1204 23 打赏 收藏 转发到动态 举报
写回复
用AI写文章
23 条回复
切换为时间正序
请发表友善的回复…
发表回复
心中的彩虹 2010-09-10
  • 打赏
  • 举报
回复
[Quote=引用 22 楼 wkc168 的回复:]
引用 18 楼 you896 的回复:
引用 17 楼 ngx20080110 的回复:

引用 12 楼 you896 的回复:
引用 8 楼 ngx20080110 的回复:

用insert into mid values (...)可以插入記錄嗎?

这个没法用valus啊。。这个values的值是通过select XX from table得到的

你自己隨便寫一個
……
[/Quote]
dba 的权限进行
查出锁
select t2.username,t2.sid,t2.serial#,t2.logon_time
from v$locked_object t1,v$session t2
where t1.session_id=t2.sid
order by t2.logon_time;

删除
alter system kill session 't2.sid,t2.serial#,';
心中的彩虹 2010-09-10
  • 打赏
  • 举报
回复
[Quote=引用 18 楼 you896 的回复:]
引用 17 楼 ngx20080110 的回复:

引用 12 楼 you896 的回复:
引用 8 楼 ngx20080110 的回复:

用insert into mid values (...)可以插入記錄嗎?

这个没法用valus啊。。这个values的值是通过select XX from table得到的

你自己隨便寫一個
insert into DW_A_USE……
[/Quote]

表被上了锁
you896 2010-09-10
  • 打赏
  • 举报
回复
怎么看那个session锁住这个表了?select * from v$session,这个语句我显示表或试图不存在。。。
ngx20080110 2010-09-10
  • 打赏
  • 举报
回复
是不是有其他session鎖住了該表?
you896 2010-09-10
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 minitoy 的回复:]

汗,认出楼主了.还没解决呢?
[/Quote]
没呢,。。纠结中,往mid表插数据插不了,清表也不让请,出错误,resource busy and acquire with nowait specified,我以为是限制我不让我清表,但是我却还能清空别的表格。。。
you896 2010-09-10
  • 打赏
  • 举报
回复
[Quote=引用 17 楼 ngx20080110 的回复:]

引用 12 楼 you896 的回复:
引用 8 楼 ngx20080110 的回复:

用insert into mid values (...)可以插入記錄嗎?

这个没法用valus啊。。这个values的值是通过select XX from table得到的

你自己隨便寫一個
insert into DW_A_USER_GPRS_MID
values
('a','……
[/Quote]

好像也不能插入,插入一条语句执行了1分钟多了。没 执行完,而且我对于mid表进行清表语句也显示错误resource busy and acquire with nowait specified
ngx20080110 2010-09-10
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 you896 的回复:]
引用 8 楼 ngx20080110 的回复:

用insert into mid values (...)可以插入記錄嗎?

这个没法用valus啊。。这个values的值是通过select XX from table得到的
[/Quote]
你自己隨便寫一個
insert into DW_A_USER_GPRS_MID
values
('a','b','c','d','e','f','g','h','i','j','k');
you896 2010-09-10
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 ojuju10 的回复:]

insert into mid select XX from table --加上from table
commit;

--如果还不行,看看mid表中是否有触发器,回滚了
[/Quote]
那个select语句没问题,单独运行也是有结果的,只是我没写全,本身是有from table的,而且mid刚才查过没有触发器
you896 2010-09-10
  • 打赏
  • 举报
回复
[Quote=引用 13 楼 wkc168 的回复:]

引用 12 楼 you896 的回复:
引用 8 楼 ngx20080110 的回复:

用insert into mid values (...)可以插入記錄嗎?

这个没法用valus啊。。这个values的值是通过select XX from table得到的

查看表上是否有触发器,以及你怎么个插入的插入语句
select trigger_name,table_name ……
[/Quote]
我用语句查了,确定没有触发器
you896 2010-09-10
  • 打赏
  • 举报
回复
触发器我不太明白,是表里面的是么?我用toad检查过,mid表没有触发器啊。
心中的彩虹 2010-09-10
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 you896 的回复:]
引用 8 楼 ngx20080110 的回复:

用insert into mid values (...)可以插入記錄嗎?

这个没法用valus啊。。这个values的值是通过select XX from table得到的
[/Quote]
查看表上是否有触发器,以及你怎么个插入的插入语句
select trigger_name,table_name from all_triggers where table_name='DW_A_USER_GPRS_MID'


you896 2010-09-10
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 ngx20080110 的回复:]

用insert into mid values (...)可以插入記錄嗎?
[/Quote]
这个没法用valus啊。。这个values的值是通过select XX from table得到的
心中的彩虹 2010-09-10
  • 打赏
  • 举报
回复
[Quote=引用楼主 you896 的回复:]
不知道大家遇没遇到过往一个表格里面插入数据却插不进去的情况。我用语句insert into mid select XX 往mid表插数据,显示mid表为空。后来我新建一个和mid表同样结构的新表aa,同时用insert into aa select XX往aa插入数据,却显示aa表有大量数据。谁知道这种情况说下吧。。谢谢。
[/Quote]

本人已经测试过你的建表语句以及插入没问题肯定是有触发器,你的插入被触发器回滚了
SQL> insert into DW_A_USER_GPRS_MID
2 select '201006','wkc168','168','a','a','a','m','a','a','aa','10' from dual
3 /

已创建 1 行。

SQL> commit;

提交完成。

SQL> select * from DW_A_USER_GPRS_MID
2 /

ACCT_M USER_ID SERV_NUMBER CHANNEL_1_ID C CHANNEL_2_ID C
------ ---------------- ---------------- ---------------- - ---------------- -
AGE GEND PRIO CUST
---- ---- ---- ----
201006 wkc168 168 a a a m
a a aa 10

ojuju10 2010-09-10
  • 打赏
  • 举报
回复
insert into mid select XX from table --加上from table
commit;

--如果还不行,看看mid表中是否有触发器,回滚了
minitoy 2010-09-10
  • 打赏
  • 举报
回复
汗,认出楼主了.还没解决呢?
ngx20080110 2010-09-10
  • 打赏
  • 举报
回复
用insert into mid values (...)可以插入記錄嗎?
you896 2010-09-10
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 ngx20080110 的回复:]

mid表是不是有trigger
[/Quote]
这个没有触发器,我用toad检查过
you896 2010-09-10
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 minitoy 的回复:]

贴下两个表的建表语句看看.
[/Quote]
这两个表的建表语句是一样的,新表我是复制的mid表的语句,只不过改了表明,我发出来
先mid表create table DW_A_USER_GPRS_MID
(
ACCT_MONTH VARCHAR2(6),
USER_ID VARCHAR2(16),
SERV_NUMBER VARCHAR2(16),
CHANNEL_1_ID VARCHAR2(16),
CHANNEL_1_TP VARCHAR2(1),
CHANNEL_2_ID VARCHAR2(16),
CHANNEL_2_TP VARCHAR2(1),
AGE VARCHAR2(4),
GENDER_ID VARCHAR2(4),
PRIORITY VARCHAR2(4),
CUST_RULE_COUNT VARCHAR2(4)
)
partition by list (ACCT_MONTH)
(
partition PART201003 values ('201003')
tablespace TBS_USER_01
pctfree 10
initrans 1
maxtrans 255
storage
(
initial 2M
next 2M
minextents 1
maxextents unlimited
pctincrease 0
),
partition PART201004 values ('201004')
tablespace TBS_USER_01
pctfree 10
initrans 1
maxtrans 255
storage
(
initial 2M
next 2M
minextents 1
maxextents unlimited
pctincrease 0
),
partition PART201005 values ('201005')
tablespace TBS_USER_01
pctfree 10
initrans 1
maxtrans 255
storage
(
initial 2M
next 2M
minextents 1
maxextents unlimited
pctincrease 0
),
partition PART201006 values ('201006')
tablespace TBS_USER_01
pctfree 10
initrans 1
maxtrans 255
storage
(
initial 2M
next 2M
minextents 1
maxextents unlimited
pctincrease 0
),
partition PART201007 values ('201007')
tablespace TBS_USER_01
pctfree 10
initrans 1
maxtrans 255
storage
(
initial 2M
next 2M
minextents 1
maxextents unlimited
pctincrease 0
),
partition PART201008 values ('201008')
tablespace TBS_USER_01
pctfree 10
initrans 1
maxtrans 255
storage
(
initial 2M
next 2M
minextents 1
maxextents unlimited
pctincrease 0
)
);
然后新教表
create table SAGA123
(
ACCT_MONTH VARCHAR2(6),
USER_ID VARCHAR2(16),
SERV_NUMBER VARCHAR2(16),
CHANNEL_1_ID VARCHAR2(16),
CHANNEL_1_TP VARCHAR2(1),
CHANNEL_2_ID VARCHAR2(16),
CHANNEL_2_TP VARCHAR2(1),
AGE VARCHAR2(4),
GENDER_ID VARCHAR2(4),
PRIORITY VARCHAR2(4),
CUST_RULE_COUNT VARCHAR2(4)
)
partition by list (ACCT_MONTH)
(
partition PART201003 values ('201003')
tablespace TBS_USER_01
pctfree 10
initrans 1
maxtrans 255
storage
(
initial 2M
next 2M
minextents 1
maxextents unlimited
pctincrease 0
),
partition PART201004 values ('201004')
tablespace TBS_USER_01
pctfree 10
initrans 1
maxtrans 255
storage
(
initial 2M
next 2M
minextents 1
maxextents unlimited
pctincrease 0
),
partition PART201005 values ('201005')
tablespace TBS_USER_01
pctfree 10
initrans 1
maxtrans 255
storage
(
initial 2M
next 2M
minextents 1
maxextents unlimited
pctincrease 0
),
partition PART201006 values ('201006')
tablespace TBS_USER_01
pctfree 10
initrans 1
maxtrans 255
storage
(
initial 2M
next 2M
minextents 1
maxextents unlimited
pctincrease 0
),
partition PART201007 values ('201007')
tablespace TBS_USER_01
pctfree 10
initrans 1
maxtrans 255
storage
(
initial 2M
next 2M
minextents 1
maxextents unlimited
pctincrease 0
),
partition PART201008 values ('201008')
tablespace TBS_USER_01
pctfree 10
initrans 1
maxtrans 255
storage
(
initial 2M
next 2M
minextents 1
maxextents unlimited
pctincrease 0
)
);
you896 2010-09-10
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 zhuomingwang 的回复:]

你往mid表中插入数据时提示插入成功还是报错?
你有没有commit?
[/Quote]
两个我都用的同样的语句,都commit了
  • 打赏
  • 举报
回复
你往mid表中插入数据时提示插入成功还是报错?
你有没有commit?
加载更多回复(3)

17,086

社区成员

发帖
与我相关
我的任务
社区描述
Oracle开发相关技术讨论
社区管理员
  • 开发
  • Lucifer三思而后行
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧