SQL Server 2008'de tablolar oluşturmak istiyorum, ancak bileşik birincil anahtarın nasıl oluşturulacağını bilmiyorum. Bunu nasıl başarabilirim?
SQL Server 2008'de tablolar oluşturmak istiyorum, ancak bileşik birincil anahtarın nasıl oluşturulacağını bilmiyorum. Bunu nasıl başarabilirim?
Yanıtlar:
create table my_table (
column_a integer not null,
column_b integer not null,
column_c varchar(50),
primary key (column_a, column_b)
);
CREATE TABLE UserGroup
(
[User_Id] INT NOT NULL,
[Group_Id] INT NOT NULL
CONSTRAINT PK_UserGroup PRIMARY KEY NONCLUSTERED ([User_Id], [Group_Id])
)
Enterprise Manager (SSMS) aracılığıyla ...
SQL görmek için daha sonra sağ tıklayabilirsiniz Table
> Script Table As
>Create To
MSSQL Server 2012 için
CREATE TABLE usrgroup(
usr_id int FOREIGN KEY REFERENCES users(id),
grp_id int FOREIGN KEY REFERENCES groups(id),
PRIMARY KEY (usr_id, grp_id)
)
GÜNCELLEME
Eklemeliyim!
Değişen yabancı / birincil anahtarlar eklemek istiyorsanız, öncelikle anahtarları kısıtlamalarla oluşturmalısınız veya değişiklik yapamazsınız. Aşağıdaki gibi:
CREATE TABLE usrgroup(
usr_id int,
grp_id int,
CONSTRAINT FK_usrgroup_usrid FOREIGN KEY (usr_id) REFERENCES users(id),
CONSTRAINT FK_usrgroup_groupid FOREIGN KEY (grp_id) REFERENCES groups(id),
CONSTRAINT PK_usrgroup PRIMARY KEY (usr_id,grp_id)
)
Aslında son yol daha sağlıklı ve seri. FK / PK Kısıtlama adlarına bakabilirsiniz (dbo.dbname> Keys> ..), ancak bir kısıtlama kullanmazsanız MSSQL otomatik olarak rasgele FK / PK adları oluşturur. İhtiyacınız olan her değişikliğe (tabloyu değiştir) bakmanız gerekecektir.
Kendiniz için bir standart belirlemenizi tavsiye ederim; kısıtlama standardınıza göre tanımlanmalıdır. Ezberlemeniz gerekmeyecek ve çok uzun düşünmeniz gerekmeyecek. Kısacası, daha hızlı çalışıyorsunuz.
Önce sütunları elle ekleyerek veritabanını ve tabloyu oluşturun. Hangi sütunda birincil anahtar olacak. Bu sütuna sağ tıklayıp birincil anahtarı ayarlamalı ve birincil anahtarın tohum değerini ayarlamalısınız.
Tabloda birleşik benzersiz anahtar oluşturmak için
ALTER TABLE [TableName] ADD UNIQUE ([Column1], [Column2], [column3]);
CREATE TABLE UserGroup
(
[User_Id] INT Foreign Key,
[Group_Id] INT foreign key,
PRIMARY KEY ([User_Id], [Group_Id])
)