ALTER PROC SP_Friends
(
@send_id int,
@receive_id int,
@rtn int=0 output
)
as
begin
declare @sql nvarchar(2000)
declare @flag int
select @sql = 'select @rtn=count(*), @flag=flag from Friends where (send_user_id=@send_id and receive_user_id=@receive_id) or (send_user_id=@receive_id and receive_user_id=@send_id) group by send_user_id, flag'
exec sp_executesql @sql, N'@rtn int output, @flag int, @send_id int, @receive_id int', @rtn output, @flag, @send_id, @receive_id
if (@rtn > 0)
begin
if @flag = 0
set @rtn = 1
set @rtn = 2
end
---如果没有这两个人成为朋友的记录
if (@rtn <= 0)
begin
exec('insert into Friends (send_user_id, receive_user_id) values (' + @send_id + ', ' + @receive_id + ')')
end
if @@error > 0
rollback tran
end
请问这个存储过程哪里有问题,我插入相同的数据,总是可以插入,请问为什么?
---------------------------------------------
1 2 0 ....
1 3 0 ....
2 6 0 ....这样的格式
设哪个字段或者哪几个字段为主键取决于你觉得这张表哪个或者哪几个字段是唯一的(比如,一张学生表,学生的学号可以是主键,学生名字可以重复但是学号必须唯一)