bar*_*san 9 sql sql-server-2008
我有一个名为的表:
Delegates
Run Code Online (Sandbox Code Playgroud)
该表有四个字段:
ID(Auto increment, Primary)
MemberNo, FromYr, ToYr
Run Code Online (Sandbox Code Playgroud)
我插入这个查询:
INSERT INTO Delegates ([MemNo],[FromYr],[ToYr]) values(@MemNo, @FromYr,@ToYr)
Run Code Online (Sandbox Code Playgroud)
值来自用户输入.一个成员可以是任何一年的代表,这就是我允许他们按照自己的意愿输入的原因.但现在问题是他们可以错误地在同一年插入一个成员超过2次.请帮帮我,我现在可以做些什么?
gbn*_*gbn 18
使用MERGE
MERGE INTO Delegates D
USING (values(@MemNo, @FromYr,@ToYr)) X ([MemNo],[FromYr],[ToYr])
ON (insert unique key join)
WHEN NOT MATCHED BY TARGET THEN
INSERT ([MemNo],[FromYr],[ToYr]))
VALUES (X.[MemNo],X.[FromYr],X.[ToYr]);
Run Code Online (Sandbox Code Playgroud)
在插入之前检查是否存在具有相同值的记录:
if not exists (select * from Delegates d where d.FromYr = @FromYr and d.MemNo = @MemNo)
INSERT INTO Delegates ([MemNo],[FromYr],[ToYr]) values(@MemNo, @FromYr,@ToYr)
Run Code Online (Sandbox Code Playgroud)