我是SQL新手,我需要为杂货店建立一个数据库(不是真实的,只是一个课程作业)
我有来自两个不同表格的两个字段 - 供应价格 - 商店从供应商处购买的价格和给予客户的价格
如何制定约束以确保供应价格低于给予客户的价格?
我拥有的相关表格是:
CREATE TABLE Supplied_Products(
[Supplier ID] Int NOT NULL Foreign Key References Suppliers,
[Product ID] Int NOT NULL Foreign Key References Products,
Price Float NOT NULL,
CHECK (Price>0),
Constraint PK_Supplied_Products PRIMARY KEY([Supplier ID] ,[Product ID])
)
CREATE TABLE Products(
[Product-ID] Int NOT NULL PRIMARY KEY,
[Product Name] Varchar(20) NOT NULL,
Price Float NOT NULL,
[Category-Name] Varchar(20) NOT NULL Foreign Key References Categories,
[Weight] Float NOT NULL,
[Is Refrigirated] Varchar(1) DEFAULT 'N'
CHECK ([Is Refrigirated] in('Y','N')),/* Is Refrigirated can be only Y-yes or N-no*/
CHECK (Price >0)
)
答案 0 :(得分:2)
对于MS SQL Server,如果要比较不同表中的数据,则无法使用CHECK约束。
在这种情况下,我会认为INSERT& UPDATE触发器将需要检查正在更新的值。如果供应商价格高于客户价格,您可以取消更新/插入。
可以找到有关触发器的信息here
答案 1 :(得分:0)
您可以使用存储过程在两个表中插入和更改行来检查此约束。