防止重复一组列
Prevent duplication of a set of columns
CREATE TABLE middle_table (
id SERIAL PRIMARY KEY NOT NULL,
col_a_id INTEGER NOT NULL REFERENCES table_b (id),
col_b_id INTEGER NOT NULL REFERENCES table_b (id)
);
我想防止 col_a_id
和 col_b_id
重复在一起,以一种有效的方式:
INSERT INTO middle_table VALUES (1,2), (1,3), (2,3);
而这些插入不会无效:
INSERT INTO middle_table VALUES (1,2), (1,2);
有没有一种简单的方法可以做到这一点而无需创建自定义函数等等?
您将使用唯一约束:
CREATE TABLE middle_table (
id SERIAL PRIMARY KEY NOT NULL,
col_a_id INTEGER NOT NULL REFERENCES table_b (id),
col_b_id INTEGER NOT NULL REFERENCES table_b (id),
UNIQUE (col_a_id, col_b_id)
);
CREATE TABLE middle_table (
id SERIAL PRIMARY KEY NOT NULL,
col_a_id INTEGER NOT NULL REFERENCES table_b (id),
col_b_id INTEGER NOT NULL REFERENCES table_b (id)
);
我想防止 col_a_id
和 col_b_id
重复在一起,以一种有效的方式:
INSERT INTO middle_table VALUES (1,2), (1,3), (2,3);
而这些插入不会无效:
INSERT INTO middle_table VALUES (1,2), (1,2);
有没有一种简单的方法可以做到这一点而无需创建自定义函数等等?
您将使用唯一约束:
CREATE TABLE middle_table (
id SERIAL PRIMARY KEY NOT NULL,
col_a_id INTEGER NOT NULL REFERENCES table_b (id),
col_b_id INTEGER NOT NULL REFERENCES table_b (id),
UNIQUE (col_a_id, col_b_id)
);