给定一个表格,例如:
CREATE TABLE dbo.MyTestData (testdata varchar(50) NOT NULL)
ALTER TABLE dbo.MyTestData WITH NOCHECK ADD CONSTRAINT [PK_MyTestData] PRIMARY KEY CLUSTERED (testdata)
并且假设当我们完成收集要从具有已知重复项的外部数据列表中添加的项目时,我们想要一个唯一的“testdata”列表......在执行插入存储过程时,应该编写该过程来测试是否存在或应该它只允许错误吗?最常见的做法是什么?我一直在进行存在性测试,但昨晚还在争论这个……
CREATE PROCEDURE dbo.dmsInsertTestData @ptestdata VarChar(50)
AS
SET NOCOUNT ON
IF NOT EXISTS(SELECT testdata FROM dbo.MyTestData WHERE testdata=@ptestdata)
BEGIN
INSERT INTO dbo.MyTestData (testdata ) VALUES (@ptestdata)
END
RETURN 0
还是在执行此错误时捕获/忽略 PK 违规错误?
CREATE PROCEDURE dbo.dmsInsertTestData @ptestdata VarChar(50)
AS
SET NOCOUNT ON
INSERT INTO dbo.MyTestData (testdata ) VALUES (@ptestdata)
RETURN 0