在我的mssql数据库中,我需要创建一个触发器,该触发器将不允许在项目表中插入负预算。我真的不知道该怎么办。所有帮助将不胜感激!
CREATE TRIGGER budget on PROJ FOR INSERT
对于所有省略触发器的答案-不幸的是,我需要使用触发器
答案 0 :(得分:5)
您不需要触发器。 SQL Server支持docker-compose up
约束:
check
答案 1 :(得分:2)
没有理由不使用CHECK
约束。但是,您肯定可以通过检查是否有任何新行的预算为负数,并在该情况下引发错误,从而通过触发器来实现该约束。
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
答案 2 :(得分:1)
如果您要检查多列,也可以
ALTER TABLE YourTableName
ADD CONSTRAINT CH_CheckForNegative CHECK(Col1 >=0 AND Col2 >= 0);
答案 3 :(得分:0)
您可以尝试添加约束来检查可接受的正整数或负整数。
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)))
有关更多信息,您可以检查链接Integer Constraint