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

Sql server 我可以在存储过程中执行约束检查吗?,sql-server,stored-procedures,constraints,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-

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

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

如果您坚持使用过程,那么我认为您不能-您打算如何将该存储过程绑定到insert&update事件


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

为什么?只需使用检查约束。