Yabancı anahtar ilişkileri oluşturma

Bu konuda yabancı anahtar ilişkileri oluşturmak açıklar SQL Server 2012kullanarak SQL Server Management Studioya Transact-SQL. Bir tablodaki satırları diğer satırlarla ilişkilendirmek istediğiniz zaman iki tablo arasında bir ilişki oluşturun.

Bu Konuda

  • Başlamadan Önce

    Sınırlamalar ve Kısıtlamalar

    Güvenlik

  • CREATE yabancı anahtarı kullanarak ilişkileri:

    SQL Server Management Studio

    Transact-SQL

Başlamadan Önce

Sınırlamalar ve Kısıtlamalar

  • Yabancı anahtar kısıtlaması yalnızca başka bir tablodaki birincil anahtar kısıtlaması bağlı zorunda değildir; Ayrıca, başka bir tablo UNIQUE sınırlamasıyla sütunlar başvuru için de tanımlanabilir.

  • FOREIGN key kısıtlaması sütuna null dışında bir değer girildiğinde, başvurulan sütun değeri bulunmalıdır; Aksi takdirde, bir yabancı anahtar ihlali hata iletisi döndürülür. Bileşik bir yabancı anahtar kısıtlaması tüm değerleri doğrulanır emin olmak için tüm katılan sütunlar üzerinde not null belirtin.

  • FOREIGN key kısıtlamaları yalnızca tabloları aynı sunucuda aynı veritabanı içinde başvuruda bulunabilir. Geçici veritabanı tutarlılığı Tetikleyiciler ile uygulanmalıdır. Daha fazla bilgi için, bkz. CREATE TRIGGER (Transact-SQL).

  • FOREIGN key kısıtlamaları aynı tablodaki başka sütun başvuruda bulunabilir. Bu bir başvurusu adlandırılır.

  • FOREIGN key kısıtlaması sütun düzeyinde belirtilen tek bir başvuru sütunu listeleyebilirsiniz. Bu sütunda aynı veri türü sütun kısıtlaması tanımlandığı olmalıdır.

  • Tablo düzeyinde FOREIGN key kısıtlaması sütun sayısı aynı sayıda başvuru sütunları kısıtlaması sütun listesinde olması gerekir. Her başvuru sütunun veri türünü de ilgili sütunun sütun listesi ile aynı olmalıdır.

  • Veritabanı AltyapısıDiğer tablolarda başvuru içeren bir Tablo FOREIGN key kısıtlamaları sayısı veya belirli bir tabloya başvuran diğer tablolar ait olan FOREIGN key kısıtlamaları sayısı önceden tanımlanmış bir sınırlama yok. Yine de kullanılabilir FOREIGN key kısıtlamaları gerçek sayısı donanım yapılandırması ve uygulama ve veritabanı tasarımı sınırlıdır. Tablo fazla 253 FOREIGN key kısıtlamaları içeren ve en fazla 253 FOREIGN key kısıtlamaları tarafından başvurulan olabilir öneririz.

  • FOREIGN key kısıtlamaları üzerinde geçici tablolara zorlanmaz.

  • Yabancı anahtar bir clr kullanıcı tanımlı türü sütun tanımlanmışsa, ikili sıralama türü uygulanması desteklemelidir. Daha fazla bilgi için, bkz. clr kullanıcı tanımlı türler.

  • Bir sütun türü varchar(max)sadece başvuran birincil anahtar da türü olarak tanımlanırsa, FOREIGN key kısıtlaması katılabilirsiniz varchar(max).

Güvenlik

İzinler

Yabancı anahtarı ile yeni bir tablo oluşturma veritabanında create table izni ve tabloyu oluşturulduğu şema alter izni gerektirir.

Varolan bir tabloda bir yabancı anahtar oluştururken tablo üzerinde alter izni gerektirir.

Başa Dön bağlantısıyla kullanılan ok simgesi[Top]

SQL Server Management Studio Kullanarak

Tablo Tasarımcısı'nda bir yabancı anahtar ilişkisi oluşturmak için

  1. Nesne Explorer'da sağ tıklatın ve ilişki yabancı anahtar tarafında olacak olan tabloyu Tasarım.

    Tablo açılır Tablo Tasarımcısı.

  2. Dan Tablo Tasarımcısı menüsünü tıklayın ilişkileri.

  3. İçinde yabancı anahtar ilişkilerini iletişim kutusunda, tıklatın Ekle.

    İlişki görünür Seçili ilişki listesinde fk_ biçiminde bir sistem tarafından sağlanan adı ile<tablename>_<tablename>, burada tablenameyabancı anahtar tablosu adı.

  4. İlişkideki tıklayın Seçili ilişki listesi.

  5. Tıklayın tabloları ve sütunları belirtimi sağa kılavuzunda ve elips tıklatın (...) özelliği sağındaki.

  6. İçinde tabloları ve sütunları iletişim kutusunda, Birincil anahtar açılan listesinde, ilişkinin birincil anahtar tarafında olacak olan tabloyu seçin.

  7. Kılavuzda, tablonun birincil anahtarı için katkıda bulunan sütunları seçin. Her sütunun soluna bitişik kılavuz hücresinde, yabancı anahtar tablosunun karşılık gelen yabancı anahtar sütununu seçin.

    Tablo Tasarımcısı ilişki için bir ad önerir. Bu adı değiştirmek için içeriği Düzenle İlişki adı metin kutusu.

  8. Seçim Tamam bir ilişki oluşturmak için.

Başa Dön bağlantısıyla kullanılan ok simgesi[Top]

Transact-SQL'i Kullanma

Yabancı anahtar yeni bir tablo oluşturmak için

  1. İçinde Object Explorer, örneğine bağlanmak Veritabanı Altyapısı.

  2. Standart çubuğunda Yeni sorgu.

  3. Kopyalama ve aşağıdaki örnek sorgu penceresine yapıştırın ve tıkırtı Execute. Örnek bir tablo oluşturur ve sütun yabancı anahtar kısıtlaması tanımlar TempIDsütun başvuran SalesReasonIDde Sales.SalesReasontablosu. on delete cascade ve on update cascade yan tümceleri için yapılan değişiklikler sağlamak için kullanılan Sales.SalesReasontablo otomatik olarak için yayılma Sales.TempSalesReasontablosu.

    USE AdventureWorks2012;
    GO
    CREATE TABLE Sales.TempSalesReason (TempID int NOT NULL, Name nvarchar(50), 
    CONSTRAINT PK_TempSales PRIMARY KEY NONCLUSTERED (TempID), 
    CONSTRAINT FK_TempSales_SalesReason FOREIGN KEY (TempID) 
        REFERENCES Sales.SalesReason (SalesReasonID) 
        ON DELETE CASCADE
        ON UPDATE CASCADE
    );GO
    

Varolan bir tabloda bir yabancı anahtar oluşturmak için

  1. İçinde Object Explorer, örneğine bağlanmak Veritabanı Altyapısı.

  2. Standart çubuğunda Yeni sorgu.

  3. Kopyalama ve aşağıdaki örnek sorgu penceresine yapıştırın ve tıkırtı Execute. Yabancı anahtar sütunu örnek oluşturur TempIDve sütun başvuruları SalesReasonIDiçinde Sales.SalesReasontablosu.

    USE AdventureWorks2012;
    GO
    ALTER TABLE Sales.TempSalesReason 
    ADD CONSTRAINT FK_TempSales_SalesReason FOREIGN KEY (TempID) 
        REFERENCES Sales.SalesReason (SalesReasonID) 
        ON DELETE CASCADE
        ON UPDATE CASCADE
    ;
    GO
    

    Daha fazla bilgi için bkz: ALTER TABLE (Transact-SQL), Tablo (Transact-sql) oluştur, ve table_constraint (Transact-sql).

Başa Dön bağlantısıyla kullanılan ok simgesi[Top]