【发布时间】:2011-11-10 14:13:31
【问题描述】:
我正在使用 SQL Server 2008 Management Studio。以下是我必须写的内容,第二个约束我遇到了一些困难。这让我有点困惑,我非常感谢一些帮助。
编写一个 ALTER TABLE 语句,将两个新的检查约束添加到 AP 数据库的 Invoices 表中。第一个应该允许 (1) PaymentDate 仅在 PaymentTotal 为零时为空,并且 (2) PaymentDate 只有在 PaymentTotal 大于零时才为空。第二个约束应该防止 PaymentTotal 和 CreditTotal 的总和大于 InvoiceTotal。
这是我目前所拥有的,第一个约束有效,但第二个无效(PaymentTotal 和 CreditTotal 的总和大于 InvoiceTotal)。
ALTER TABLE Invoices WITH CHECK
ADD check (
(PaymentTotal = 0 AND PaymentDate is NULL)
OR
(PaymentTotal > 0 AND PaymentDate is NOT NULL)
)
ADD CHECK (
(PaymentTotal < InvoiceTotal = SUM)
OR
(CreditTotal < InvoiceTotal = SUM)
)
在此先感谢您。
【问题讨论】:
-
第一个改变告诉你必须发生什么
标签: sql sql-server sql-server-2008 tsql alter-table