tsql插入和更新

时间:2011-08-08 15:31:24

标签: sql sql-server tsql

我总是创建单独的插入和更新程序,例如插入员工和更新员工,但是当添加新字段时,我很无聊更新这两个程序。对此有任何想法。人们如何处理sql /存储过程中的插入和更新

5 个答案:

答案 0 :(得分:3)

对于SQL Server 2008+,需要考虑MERGE命令。

答案 1 :(得分:1)

一个技巧是为参数添加ID字段。如果ID为-1,则插入新记录。如果还有别的,请更新。

答案 2 :(得分:1)

T-SQL Insert or update

是您想要的一个很好的例子。实际上,问题本身就是一个解决方案:)

答案 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