2016-07-01 8 views
0

Если у меня есть следующие таблицы, можно создать ограничение в #TableNotes, что будет проверять, если InstanceId существует в #Users если TableId == 1 и проверяет InstanceId существует в #Companies если TableId == 2?ограничение ссылочной из одной таблицы на несколько таблиц

create table Users(
    UserId int not null, 
    TableId int not null default 1 
) 

create table Companies(
    CompanyId int not null, 
    TableId int not null default 2 
) 

create table TableNotes(
    InstanceId int not null, 
    TableId int not null 
) 

Есть ли способ сделать это без использования триггеров?

ответ

0

Я бы рекомендовал не разрабатывать вашу таблицу и вместо этого использовать два столбца для правильной ссылочной целостности. Я также предполагаю, что вы имеете в виду TableId, а не ModelId Что-то вроде следующих строк, вероятно, сработает лучше всего для вас, если вы все равно сможете изменить дизайн своей таблицы.

 CREATE TABLE TableNotes(
    TableId int not null, 
    UserId int constraint fk_Users_Table_id foreign key references Users(TableId), 
    CompanyId int constraint fk_Companies_Table_id foreign key references Companies(TableId) 
    ) 

Если это не вариант, как вы заявили, единственным вариантом будет использовать триггеры, чтобы держать это под контролем.

Смежные вопросы