如果记录已经存在,请停止插入表中
我有sql服务器程序,请参阅下文。如果记录已经存在,请停止插入表中
ALTER PROCEDURE [dbo].[uspInsertDelegate]
(
@CourseID int,
@CPUserID int,
@StatusID int,
@CreateUser varchar(25)
)
AS
SET NOCOUNT OFF;
INSERT INTO tblDelegate
(
CourseID,
CPUserID,
StatusID,
CreateUser
)
VALUES
(
@CourseID,
@CPUserID,
@StatusID,
@CreateUser
)
RETURN
现在我不想要插入到表tblDelegate如果插入courseid和cpuserid是相同的,在表tblDelegate
记录简单的第一次考验。在SQL Server 2005中,您也可以尝试/捕获以忽略重复的错误。
IF NOT EXISTS (SELECT *
FROM tblDelegate
WHERE CourseID = @CourseID etc)
INSERT INTO tblDelegate
(
CourseID,
CPUserID,
StatusID,
CreateUser
)
VALUES
(
@CourseID,
@CPUserID,
@StatusID,
@CreateUser
)
请问:您的意思是“SET NOCOUNT ON”?
您正在使用的是什么版本的SQL Server?如果你在2008年查阅MERGE声明。
然后如第一个答案中指出的那样使用IF NOT Exists Clause。
我正在使用SQL Server 2005. – 2009-09-07 08:43:50
谢谢亲爱的!您的帮助 – 2009-09-07 09:31:39
添加一个唯一键约束到courseid
和cpuuserid
列。
如果您尝试插入一个复制,您将会遇到密钥违规。
除了这样做之外,您还可以在使用存储过程插入之前测试其值是否存在。
BEGIN TRAN
SELECT 1
FROM tblDelegate WITH (TABLOCK)
WHERE [email protected]
AND [email protected]
IF @@rowcount = 0
BEGIN
--Record doesn't already exist
--Insert it
END
COMMIT
你想要插入? http://stackoverflow.com/questions/13540/insert-update-stored-proc-on-sql-server – 2009-09-07 08:44:09
@Sam:它看起来更像是一个插入(如果不存在)问题 – pjp 2009-09-07 09:22:09