我可以在存储过程中进行约束检查吗?

时间:2015-11-14 18:43:53

标签: sql-server stored-procedures constraints

我想使用存储过程来检查是否插入了状态。我知道我可以从设计表中获得约束,我只想在一个过程中完成它。

create procedure Service_Status(@service_status varchar(15))
AS
  Begin
     IF (NOT EXISTS(SELECT * FROM ServiceStatus WHERE   
      [status]=@service_status))
     --Check ([status] in ('Pending','In-Progress','Closed'))
       BEGIN
       SELECT 'Status must be either Pending, In-Progress or Closed'
       END

END

1 个答案:

答案 0 :(得分:2)

如果你坚持程序,那么我认为你不能 - 你打算如何将该存储过程绑定到插入&更新活动?

您可以将检查代码封装在用户定义的函数中,但是您需要在约束中调用该函数(您似乎没有瞄准),您也可以创建一个触发器(可能不建议),但我真的不知道如何对插入/更新事件强制执行存储过程检查。