我有一个包含两个表的简单数据库:
Catalog (
id_catalog
, name )
Product (
的 id_product
, name, quantity, id_catalog# )
这些字段都不能为空,因此我在任何地方都设置了NOT NULL
约束。
但是如果它们在同一个目录中,我需要两个产品不能具有相同的名称。我怎么能这样做?
我的意思是
1, chocolat, 5, 1
2, chocolat, 7, 2
这些都没关系,因为它们位于两个不同的目录中,但是:
1, chocolat, 5, 1
2, chocolat, 7, 1
不应该被允许,因为我不应该在同一目录中两次接受巧克力。
答案 0 :(得分:4)
您可以创建unique index以避免使用同一对(99
99.9
99.01
)插入多行。
创建表格:
name, id_catalog#
添加索引:
SQL> create table Product(id_product number, name varchar2(10), quantity number, id_catalog# number);
Table created.
这将有效:
SQL> create unique index idx1 on Product (name, id_catalog#);
Index created.
这不起作用:
SQL> insert into Product (id_product, name, quantity, id_catalog#) values (1, 'chocolat', 5, 1);
1 row created.
但由于SQL> insert into Product (id_product, name, quantity, id_catalog#) values (2, 'chocolat', 7, 1);
insert into Product (id_product, name, quantity, id_catalog#) values (2, 'chocolat', 7, 1)
*
ERROR at line 1:
ORA-00001: unique constraint (ALEK.IDX1) violated
id_catalog#