Oracle触发器问题 自动填写主键

来源:百度知道 编辑:UC知道 时间:2024/06/25 05:26:45
设有A表 ,字段( PK , con , pro ) ,PK 为主键,三个字段都为字符型。
如果想实现在 Insert 的时候 , PK的字段值是 con 和 pro 两个字段连接字符串。 该如何写这个触发器?谢谢

比如:Insert时,获得 con = 'aaa' , pro = 'bbb' , 通过触发器生成 PK = 'aaa-bbb' ,并插入数据库。

-----------------------------建表-------------------
CREATE TABLE test_tr(pk VARCHAR2(25) PRIMARY KEY,
con VARCHAR2(25),
pro VARCHAR2(25)
);
----------------------------触发器------------------

CREATE OR REPLACE TRIGGER test_insert
BEFORE INSERT ON test_tr
FOR EACH ROW
DECLARE
BEGIN
:new.pk := :new.con||'-'||:new.pro;
END test_insert;
------------------------测试--------------------
INSERT INTO test_tr(con,pro) VALUES('hello','kitty');
commit;
-----------------------结果---------------------
select * from test_tr;
hello-kitty,hello,kitty

-----
有一个问题,就是为什么要用触发器?
直接insert不行吗?

反问2个问题哈
1、con 和 pro 两个字段插入的如果是非数字,相减会出错。
2、PK是主键的话,你确定触发器触发的con-pro就一定不一样吗?
你看下面你应该会明白的,希望能帮到你:
-----------------------------建表-------------------
CREATE TABLE test_tr(pk INTEGER PRIMARY KEY,
con INTEGER,
pro INTEGER
)