Могу ли я создать ограничение для базы данных, обеспечивающее некоторые отношения между столбцами в разных таблицах, связанных внешним ключом? Так, например, могу ли я убедиться, что строка в таблице имеет значение для определенного столбца, которое больше, чем значение в столбце строки в другой таблице, на которую она ссылается.
Так наивно вы могли бы подумать, что это будет выглядеть так:
CREATE table1 (
id integer PRIMARY KEY,
col1 integer
);
CREATE table2 (
id integer PRIMARY KEY,
link_to_1 integer REFERENCES table1,
col2 integer,
-- Is there some way of specifying the following constraint?
CHECK (col2 > link_to_1.col1)
);
Таким образом, строка в table1
никогда не может иметь запись со значением col1, большим, чем col2
в строке link_to_1
.
Очевидно, что это ограничение не позволит вам впоследствии изменить значение table1.col1
, чтобы оно было более высоким, чем значение table2.col2
.