添加约束以仅允许将列更新为更高的值

时间:2017-11-16 12:21:37

标签: sql sql-server sql-server-2012 constraints

我们有一个表格,可以跟踪每个货柜的交货编号。列包含一个整数,表示每个直到的最后一个传递号,每个直到由一行表示。我们无法找到的应用程序中的错误有时会将交货编号更新为较低的编号。我们需要确保此数字仅在值上更新,并且永远不会更新为较低的值。

以下代码是所需内容的示例:

CREATE TABLE [till_deliveries](
    [id] [int] NOT NULL,
    [delivery_no] [int] NOT NULL,
 CONSTRAINT [PK_till_deliveries] PRIMARY KEY CLUSTERED 
(
    [id] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) 

insert into [till_deliveries] values (1,100), (2, 200)

--This update should be permitted
update [till_deliveries]
set [delivery_no] = 101
where id = 1

--This update should not be allowed by constraint
update [till_deliveries]
set [delivery_no] = 199
where id = 2

理想情况下,我们希望对列进行约束,但无法确定如何执行,或者甚至可能。 如果我没有足够好地描述:这不依赖于其他行值。每个货物都有自己的交货编号,彼此独立。

0 个答案:

没有答案