sql中多主键判断的问题,在线等(50分)

  • 主题发起人 主题发起人 poim110
  • 开始时间 开始时间
P

poim110

Unregistered / Unconfirmed
GUEST, unregistred user!
现在有表TABLE 表中含有4个字段分别为A,B,C,D
现在要向表内添加记录,当A字段有重复值时,不允许添加,当B字段有重复值时,不允许添加,当C,D字段同时有重复值时,不允许添加.请问高手如何用SQL的存储过程实现!谢谢
create procedure table_add
@A CHAR(12),
@B CHAR(12),
@C CHAR(12),
@D CHAR(12)
AS
接下来要实现的是,当通过以上参数添加记录时
要判断A字段中是否有与参数@A相同的记录存在如果存在添加失败并且返回一个错误信息
反之添加成功.
判断B字段中是否有与参数@B相同的记录存在如果存在添加失败并且返回一个错误信息
反之添加成功.
判断C字段与D字段中是否同时有与参数@C,@D相同的记录存在如果存在添加失败并且返回一个错误信息,反之添加成功.
 
你看看ms sql server的关于create index的帮助,好像创建索引有个UNIQUE属性 可以避免插入重复值
 
试过了不行的!
 
if not exists(select count(*) from TT group by A having count(*)>1)
begin
if not exists(select count(*) from TT group by B having count(*)>1)
begin
if not exists(select count(*) from TT group by C,D having count(*)>1)
begin
--输入你的插入代码
...
end
end
end
 
联合索引试过吗?
 
给个答案如果会了我就不问了,SQL学的比较烂
 
create table tmp
(
A int,
B int,
C int,
D int
)
CREATE UNIQUE INDEX IX_A ON TMP(A)
CREATE UNIQUE INDEX IX_B ON TMP(B)
CREATE UNIQUE INDEX IX_CD ON TMP(C,D)
我简单的测试了一下可以实现你说的要求
 
下面的的插入语句也要通过存储过程实现你是怎么做的呢?最好给我个完成的存储过程,本人SQL属于初学阶段
 
没明白你说的意思??
CREATE UNIQUE INDEX IX_A ON TMP(A)
CREATE UNIQUE INDEX IX_B ON TMP(B)
CREATE UNIQUE INDEX IX_CD ON TMP(C,D)
是在创建表时执行的sql语句,表创建好了就直接insert数据就可以了
 
现在有表KU表中含有4个字段分别为,B,C,D
现在要向表内添加记录,当A字段有重复值时,不允许添加,当B字段有重复值时,不允许添加,当C,D字段同时有重复值时,不允许添加.请问高手如何用SQL的存储过程实现!谢谢
create procedure KU_add
@A CHAR(12),
@B CHAR(12),
@C CHAR(12),
@D CHAR(12)
AS
接下来要实现的是,当通过以上参数添加记录时
要判断A字段中是否有与参数@A相同的记录存在如果存在添加失败并且返回一个错误信息
反之添加成功.
判断B字段中是否有与参数@B相同的记录存在如果存在添加失败并且返回一个错误信息
反之添加成功.
判断C字段与D字段中是否同时有与参数@C,@D相同的记录存在如果存在添加失败并且返回一个错误信息,反之添加成功.
现在就是要往KU这个表中添加,我该怎么做啊,最好给我个完整的存储过程,有QQ的话留个我在QQ里问你
 
接受答案了.
 
后退
顶部