首先要谢谢老紫竹群里的一些人
谢谢天影 提供过滤器和帮助分析解决问题
谢谢(_愛若蕪緣… 提供过滤器和帮助分析解决问题
谢谢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