联合主键的作用,每一字段可以有重复的,但是三个在一起不能有重复的,触发器,constraint

首先要谢谢老紫竹群里的一些人

谢谢天影 提供过滤器和帮助分析解决问题
谢谢(_愛若蕪緣… 提供过滤器和帮助分析解决问题
谢谢dgqbcht 不仅提供帮助分析解决问题,并且特别为我制作演示视频
谢谢awusoft 帮助分析解决问题
谢谢koko 平时经常帮助分析解决问题
谢谢火龙果平时经常帮助分析解决问题

 

每一字段可以有重复的,但是三个在一起不能有重复的,这就是联合主键

数据库里不让两条数据完全一样
直接手动操作数据库也不让出现两条一样的

比如有A,B,C3个字段
A    B    C
1    1    1    √
1    1    2    √
1    2    1    √
1    2    2    √
2    1    1    √
2    2    2    √

再往里插上边相同的记录就错
比如
1    1    1    ×

语法:alter table 表名 add constraint 主键别名(只是个别名) primary key (字段1, 字段2, 字段3);

alter table kk.kkbmqx  add constraint lhpk primary key (id, dw, bm);

触发器创建:

CREATE TRIGGER tr_fortoufa ON KKBMQX   FOR INSERT AS BEGIN   IF(EXISTS(SELECT 1 FROM KKBMQX WHERE ID = ( :NEW.ID) AND DW = ( :NEW.DW) AND BM =(:NEW.BM) ) )   THEN dbms_output.put_line('重复!!');   ELSE   INSERT INTO KKBMQX WHERE 。。。 END tr_fortoufa

数据不能重复的语句

将三个字段连接起来作为主键,进行数据是否重复的判断。这里值得注意的是某列的值可能为空,所以要赋一个空字符串过去。

然后将不重复的值,插入新表就可以了。

select * from kk.kkbmqx where nvl(id,')|| nvl(dw,')|| bm not in (select id||dw||bm  from kk.kkb

 

黑色头发  http://heisetoufa.iteye.com

你可能感兴趣的:(C++,c,C#)