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

设有A表,字段(PK,con,pro),PK为主键,三个字段都为字符型。如果想实现在Insert的时候,PK的字段值是con和pro两个字段连接字符串。该如何写这个触发器... 设有A表 ,字段( PK , con , pro ) ,PK 为主键,三个字段都为字符型。
如果想实现在 Insert 的时候 , PK的字段值是 con 和 pro 两个字段连接字符串。 该如何写这个触发器?谢谢

比如:Insert时,获得 con = 'aaa' , pro = 'bbb' , 通过触发器生成 PK = 'aaa-bbb' ,并插入数据库。
展开
 我来答
百度网友4571b65e
2009-02-12 · TA获得超过299个赞
知道小有建树答主
回答量:118
采纳率:0%
帮助的人:114万
展开全部
反问2个问题哈
1、con 和 pro 两个字段插入的如果是非数字,相减会出错。
2、PK是主键的话,你确定触发器触发的con-pro就一定不一样吗?
你看下面你应该会明白的,希望能帮到你:
-----------------------------建表-------------------
CREATE TABLE test_tr(pk INTEGER PRIMARY KEY,
con INTEGER,
pro INTEGER
)
;
----------------------------触发器------------------

CREATE OR REPLACE TRIGGER test_insert
BEFORE INSERT ON test_tr
FOR EACH ROW
DECLARE
v_pk INTEGER;
BEGIN
:new.pk := :new.con-:new.pro;

END;
------------------------测试--------------------
INSERT INTO test_tr VALUES(2,3,2);
-----------------------结果---------------------
pk con pro
1 3 2
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
changlin8666
推荐于2016-08-06 · 超过20用户采纳过TA的回答
知道答主
回答量:51
采纳率:0%
帮助的人:0
展开全部
-----------------------------建表-------------------
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不行吗?
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式