CHECK约束是否检查列值是否为“IN”允许的其他几个表之一?

时间:2014-10-24 06:49:46

标签: sql

我正在学习数据库课程,我们只使用sqlite3。我们被要求在CREATE TABLE语句中写一个sqlite3似乎不支持的约束。这是我到目前为止所做的:

CREATE TABLE Product 
(
    maker varchar(1),
    model varchar(4),
    type varchar(10),
    CHECK (model IN (SELECT model FROM PC) OR 
           model IN (SELECT model FROM Laptop) OR
           model IN (SELECT model FROM Printer)) 
);

我想知道这个陈述在MySQL之类的内容是否合法,以及它是否真的按照我的意愿行事。我有三张桌子; PC,笔记本电脑和打印机,我希望表Product的model属性在这三个表中的任何一个表中都有相应的型号。

好的,请原谅我提出一个诚实的问题......感谢那些指点我在网上的小提琴方向的人。

1 个答案:

答案 0 :(得分:3)

您应该使用fileds Modelsmodel_id(打印机,笔记本电脑等等),制造商等创建表格type。 不要为PC,笔记本电脑和打印机制作3个不同的表格。

Sqlite还支持外键。你应该阅读更多关于它们的信息。