CREATE TABLE COMPANY7(
ID INT PRIMARY KEY NOT NULL,
NAME TEXT,
AGE INT ,
ADDRESS CHAR(50),
SALARY REAL,
EXCLUDE USING gist
(NAME WITH =,--如果满足 NAME 相同,AGE 不相同则不允许插入,否则允许插入
AGE WITH <>)--其比较的结果是如果整个表达式返回true,则不允许插入,否则允许);
INSERT INTO COMPANY7 VALUES(1,'Paul',32,'California',20000.00);
INSERT INTO COMPANY7 VALUES(2,'Paul',32,'Texas',20000.00);--此条数据的 NAME 与第一条相同,且 AGE 与第一条也相同,故满足插入条件
INSERT INTO COMPANY7 VALUES(3,'Allen',42,'California',20000.00);--此数据与上面数据的 NAME 相同,但 AGE 不相同,故不允许插入
前面两条顺利添加的 COMPANY7 表中,但是第三条则会报错:
ERROR: conflicting key value violates exclusion constraint "company7_name_age_excl"
DETAIL:Key(name, age)=(Paul,42) conflicts with existing key (name, age)=(Paul,32).