我的数据库里面有一个表的id字段用的是小写标定的也就是“id”,现在利用序列和触发器在向表内插入新记录时添加id项数值。
我的触发器是:
CREATE OR REPLACE TRIGGER INSERT_CONNECTION
BEFORE INSERT ON "Connection"
BEGIN
SELECT ID_SQE.NEXTVAL INTO :NEW.ID FROM dual
END
/
可是我试过很多次了,每次都提示赋值:NEW.ID不正确。即便我把:NEW.ID改为:NEW.id也不行。
但当我把表Connection中id改为ID时,就没有问题了。请问,可否不修改数据库id的大小写,实现我的功能。还望高手赐教!
我的触发器是:
CREATE OR REPLACE TRIGGER INSERT_CONNECTION
BEFORE INSERT ON "Connection"
BEGIN
SELECT ID_SQE.NEXTVAL INTO :NEW.ID FROM dual
END
/
可是我试过很多次了,每次都提示赋值:NEW.ID不正确。即便我把:NEW.ID改为:NEW.id也不行。
但当我把表Connection中id改为ID时,就没有问题了。请问,可否不修改数据库id的大小写,实现我的功能。还望高手赐教!
解决方案 »
- 如何计算两个时间之间相差月数?
- 请问启动的实例是哪个?
- oracle 816 for windows 2000 到 oracle 816 for windows 2003 可以吗?
- 如何启动数据库
- 这个存储过程哪里写错了?
- 关于UPDATE的问题
- oracle9i监听启动不了,提示"无法定位程序输入点snlpcsu_sleep_usecs于动态链接库oranl9.dll上
- 在oracle8i中如何统计某个月记录
- oracle中有类似sql Server中top n的函数吗?
- 关于oracle9i的一个简单问题
- 为何我的存储过程在PL/sql中调试不通过,提示出错!
- Oracle11G,MEMORY_TARGET的设置问题,求大神指导
BEFORE INSERT ON "Connection"
BEGIN
SELECT ID_SQE.NEXTVAL INTO :NEW.ID FROM dual;
--会不会是少了个分号啊
END;
--oracle字段都是存储的都是大写的 即使你创建表的时候是小写
还有,我是用的Oracledeveloper做的
2 ("id" number);
Table created
SQL>
SQL> create or replace trigger tri_t_test_tri
2 before insert on t_test_tri
3 for each row
4 declare
5 begin
6 if :new."id" = 1 then
7 :new."id" := 2;
8 end if;
9 end;
10 /
Trigger created
SQL> insert into t_test_tri values(1);
1 row inserted
SQL> select * from t_test_tri;
id
----------
2
SQL>
1* create table test(id number,name varchar2(10)) --id是用小写的
scott@YPCOST> /表已创建。scott@YPCOST> create sequence ID_SQE start with 1 increment by 1 ;序列已创建。scott@YPCOST> select id_sqe.nextval from dual; NEXTVAL
----------
1已写入 file afiedt.buf 1 CREATE OR REPLACE TRIGGER INSERT_CONNECTION
2 BEFORE INSERT ON test
3 for each row --这上这行
4 BEGIN
5 SELECT ID_SQE.NEXTVAL INTO :NEW.ID FROM dual;--:NEW.ID用大写的可以
6* END;
scott@YPCOST> /触发器已创建scott@YPCOST> insert into test(name) values('dfds');已创建 1 行。scott@YPCOST> commit;提交完成。scott@YPCOST> select * from test; ID NAME
---------- ----------
2 dfdsscott@YPCOST> ed
已写入 file afiedt.buf 1 CREATE OR REPLACE TRIGGER INSERT_CONNECTION
2 BEFORE INSERT ON test
3 for each row
4 BEGIN
5 SELECT ID_SQE.NEXTVAL INTO :NEW.id FROM dual; --用小写的也可以
6* END;
scott@YPCOST> /触发器已创建scott@YPCOST> insert into test(name) values('dfds');已创建 1 行。scott@YPCOST> select * from test; ID NAME
---------- ----------
2 dfds
3 dfds
已写入 file afiedt.buf 1* create table test("id" number,name varchar2(10))
scott@YPCOST> /表已创建。scott@YPCOST> create sequence ID_SQE start with 1 increment by 1 ;序列已创建。scott@YPCOST> ed
已写入 file afiedt.buf 1 CREATE OR REPLACE TRIGGER INSERT_CONNECTION
2 BEFORE INSERT ON test
3 for each row --这上这行
4 BEGIN
5 SELECT ID_SQE.NEXTVAL INTO :NEW."id" FROM dual;--也用双引号
6* END;
scott@YPCOST> /触发器已创建scott@YPCOST> insert into test(name) values('df');已创建 1 行。scott@YPCOST> commit;提交完成。scott@YPCOST> select * from test; id NAME
---------- ----------
1 df