在将数据插入表之前强制存储过程进行检查

时间:2013-02-18 11:43:22

标签: sql sql-server-2005

我创建了这个存储过程,

现在我想做的是,如果表格中存在类似的记录类型,则总是替换

这是sp,

USE [DBName]
GO

CREATE procedure [dbo].[InsertDD]
(
    @ColumnA varchar(1000), 
    @ColumnB varchar(1000),
    @CurrentDateAndTime datetime

)
AS

INSERT Into TableName
(
    ColumnA,    
    ColumnB,
    CurrentDateAndTime
)
Values
(
    @ColumnA,   
    @ColumnB,
    @CurrentDateAndTime
)

现在如果表格已经有B列值(无论字母有差异,例如大写或小写),那么只需更新CurrentDateAndTime值。

如果没有,那么只需添加三个值。

2 个答案:

答案 0 :(得分:1)

进行更新,如果没有找到要更新的记录,请执行insert:

update TableName 
set CurrentDateAndTime = @CurrentDateAndTime
where ColumnB = @ColumnB

if (@@rowcount = 0) begin

  insert into TableName (
    ColumnA,    
    ColumnB,
    CurrentDateAndTime
  ) values (
    @ColumnA,   
    @ColumnB,
    @CurrentDateAndTime
  )

end

答案 1 :(得分:0)

搜索IF ... EXISTS命令。最后你也可以使用MERGE语句,如果一行已经存在并且你可以进行更新,它就决定使用SELECT。

相关问题