【发布时间】:2018-02-02 16:04:55
【问题描述】:
我有以下表格定义:
CREATE TABLE modules(
id integer PRIMARY KEY)
CREATE TABLE submodules(
id integer PRIMARY KEY,
identnum integer)
CREATE TABLE usablesubmodules(
moduleid integer REFERENCES modules(id),
submoduleid integer REFERENCES submodules(id))
基本上是一个模块表和一个子模块表。模块只能使用由可用子模块表定义的某些子模块。如何定义一个约束,以使任何给定模块可用的子模块的 identnum 值都是唯一的?也就是说,以下查询必须为任何给定的 moduleid 'x' 返回一组唯一的 identnum 值:
SELECT identnum FROM submodules
INNER JOIN usablesubmodules ON submodules.id = usablesubmodules.submoduleid
WHERE usablesubmodules.moduleid = x
如果这很重要,我正在使用 postgresql 9.6。
【问题讨论】:
标签: sql postgresql unique-constraint postgresql-9.6