Z jakiś dziwnych powodów tworząc (graficznie lub przez create table) tablice w mssql nie można zdefiniować klucza głównego na dwóch lub więcej kolumnach w definicji tablicy. Obejściem tego problemu jest poniższe rozwiązanie:
create table t_test( id_one int not null, id_two int not null, city_name varchar(50)) on table_space
go
alter table t_test add constraint pk_t_test primary key (id_one, id_two)
Po utworzeniu kluczy głównych na tablicach przyszedł czas na utworzenie kluczy obcych, przykład korzysta z klucza złożonego:
alter table t_test add constraint t_test_fk_1 foreign key(id_one, id_two) references t_test_1 (id_one, id_two) on delete cascade
Ostatnia opcja (on delete cascade) jest dość niebezpieczna -> jednak to bohaterowie mają świat u swych stóp! Czasami zachodzi potrzeba wyłączenia klucza obcego (czyli tak naprawdę referencji):
alter table t_test nocheck constraint t_test_fk_1
oraz włączenie:
alter table t_test check constraint t_test_fk_1