2016-07-01 3 views
0

Wenn ich die folgenden Tabellen haben, ist es möglich, eine Einschränkung in #TableNotes zu erstellen, die überprüft, ob InstanceId in #Users liegt vor, wenn TableId == 1 und prüft, ob InstanceId in #Companies wenn TableId == 2 existiert?Referenz Constraint aus einer Tabelle auf mehrere Tabellen

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 
) 

Gibt es eine Möglichkeit, dies zu erreichen, ohne Trigger zu verwenden?

Antwort

0

Ich würde empfehlen, nicht Ihre Tabelle zu entwerfen, und stattdessen zwei Spalten verwenden, um die referentielle Integrität korrekt zu halten. Ich nehme auch an, dass du meinst TableId statt ModelId Etwas in den folgenden Zeilen würde wahrscheinlich am besten für Sie arbeiten, wenn Sie noch das Design Ihrer Tabelle ändern können.

 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) 
    ) 

Wenn dies nicht möglich ist, wie Sie Ihre einzige Option angegeben haben, wäre Trigger zu verwenden, um dies in Schach zu halten.

Verwandte Themen