联合主键的作用,每一字段可以有重复的,但是三个在一起不能有重复的,触发器,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

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值