我总是创建单独的插入和更新程序,例如插入员工和更新员工,但是当添加新字段时,我很无聊更新这两个程序。对此有任何想法。人们如何处理sql /存储过程中的插入和更新
答案 0 :(得分:3)
对于SQL Server 2008+,需要考虑MERGE命令。
答案 1 :(得分:1)
一个技巧是为参数添加ID字段。如果ID为-1,则插入新记录。如果还有别的,请更新。
答案 2 :(得分:1)
是您想要的一个很好的例子。实际上,问题本身就是一个解决方案:)
答案 3 :(得分:0)
您可以将所有内容视为更新,然后在记录不存在但不确定更容易或更清晰的情况下替换插入。另一种选择可能是为任何文本创建通用存储过程,然后将字段名称传递给过程,但是将存储过程暴露给黑客并且会破坏存储过程的安全性。我所拥有的是textField的通用类和文本的通用表,其中textField表将fieldID作为键的一部分,因此它包含多个文本字段。从textField类我直接调用SQL但我可以重新考虑它来调用存储过程。然后我有另一个日期字段的通用表和类...
答案 4 :(得分:0)
只需使用标签即可在一个存储过程中完成。
例如:
CREATE PROCEDURE dbo.spAddUpdateXXXXXXX
@UniqueId bigint,
@Value01 int,
@Value02 varchar(50),
/*
Other Inputs Go Here
*/
@ValueEnd datetime
AS
Set NoCount On
IF @UniqueId < 1 GOTO InsertRecord
--------------------------------------------------------------------
UpdateRecord:
--------------------------------------------------------------------
UPDATE myTable
SET
Bla
Bla
Bla
GOTO EndProcessing
--------------------------------------------------------------------
InsertRecord:
--------------------------------------------------------------------
INSERT INTO myTable
Bla
Bla
Bla
GOTO EndProcessing
--------------------------------------------------------------------
EndProcessing:
--------------------------------------------------------------------
RETURN 0
Set NoCount Off