比较2个表之间的行

时间:2010-06-07 10:52:56

标签: sql

我是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)
)

2 个答案:

答案 0 :(得分:2)

对于MS SQL Server,如果要比较不同表中的数据,则无法使用CHECK约束。

在这种情况下,我会认为INSERT& UPDATE触发器将需要检查正在更新的值。如果供应商价格高于客户价格,您可以取消更新/插入。

可以找到有关触发器的信息here

答案 1 :(得分:0)

您可以使用存储过程在两个表中插入和更改行来检查此约束。