alter table projects add constraint chk_projects_budget check (budget >= 0);
5
您可以尝试此操作来添加约束以检查可接受的整数值(正或负) .
CREATE TABLE [dbo].[Tbl](
[F1] [int] NULL,
[F2] [int] NULL
) ON [PRIMARY]
GO
--To accept only positive numbers and 0
ALTER TABLE [dbo].[Tbl] WITH CHECK ADD CONSTRAINT [CK_Tbl] CHECK (([F1]>=(0)))
GO
--To check constraint on the table
ALTER TABLE [dbo].[Tbl] CHECK CONSTRAINT [CK_Tbl]
GO
--To accept only negative numbers and 0
ALTER TABLE [dbo].[Tbl] WITH CHECK ADD CONSTRAINT [CK_Tbl_1] CHECK (([F2]<=(0)))
CREATE TRIGGER projects_positive_budget ON projects
FOR INSERT, UPDATE
IF EXISTS (SELECT * FROM inserted WHERE budget < 0)
BEGIN
RAISERROR('No negative budget is allowed', 16, -1);
ROLLBACK;
RETURN
END
GO
4 回答
你不需要触发器 . SQL Server支持
check
约束:您可以尝试此操作来添加约束以检查可接受的整数值(正或负) .
有关更多信息,请查看链接Integer Constraint
如果您想检查多个列,也可以
没有理由不使用
CHECK
约束 . 但是,通过检查是否有任何新行具有负预算并在该情况下引发错误,您当然可以通过触发器实现该约束 .