Sql server Raiserror SQL Server

Sql server Raiserror SQL Server,sql-server,Sql Server,我有一个插入声明: Insert into foo (id, value) Values (1, 5) 当值为例如-1时,是否有任何方法引发错误 Insert into foo (Id, value) Values (1, case when -1=-1 then raiserror() else 5 end) 您可以尝试添加检查约束,例如 CREATE TABLE dbo.foo ( id int primary key, value int NOT NULL CHECK

我有一个插入声明:

Insert into foo (id, value) 
Values (1, 5)
当值为例如-1时,是否有任何方法引发错误

Insert into foo (Id, value)
Values (1, case when -1=-1 then raiserror() else 5 end)

您可以尝试添加检查约束,例如

CREATE TABLE dbo.foo
(
    id int primary key,
    value int NOT NULL CHECK (value >= 0)
)
如果表
foo
已经存在,则可以使用
altertable
添加约束:

ALTER TABLE dbo.foo ADD CONSTRAINT ck_value CHECK (value >= 0)
Raiseerror()
方法在存储过程中受支持

最好将insert查询写入存储过程并应用如下验证:

IF (@value < 0) 
BEGIN
    RAISERROR('Invalid parameter: @value cannot be less than zero', 18, 0)
    RETURN
END
IF(@value<0)
开始
RAISERROR('无效参数:@值不能小于零',18,0)
返回
结束

很难说出您在这里实际寻找的是什么。您是否希望在表上显示一个
检查约束
?我只是想知道有没有办法?如果你不想使用constraint,那么你可以编写问题中包含的文本代码并执行吗?不,但你自己会发现的。所以你需要给你的问题添加更多的上下文。你到底想达到什么目的?我(显然还有蒂姆)的怀疑是,你想阻止一个特定的值被插入到表中(无论如何尝试)。@AliTheOne你问是否有办法。有。您能在一个tsql insert语句中完成吗?不。对于这样的问题,其他人质疑前提是有原因的——因为您可能试图做一些与您使用的平台的设计/架构不一致的事情。@SMor谢谢您的时间,我只是在我的程序中检查一下