SORU
10 Aralık 2009, PERŞEMBE


(Nasıl 3.6.21) mevcut bir sqlite tablo için yabancı anahtar eklerim?

Aşağıdaki tablo var:

CREATE TABLE child( 
  id INTEGER PRIMARY KEY, 
  parent_id INTEGER, 
  description TEXT);

Nasıl parent_id yabancı anahtar kısıtlaması eklerim? Yabancı tuşları Etkin olduğunu varsayalım.

En örnekler tablo oluşturduğunuzu varsayalım - varolan bir kısıtlama eklemek istiyorum.

CEVAP
10 Aralık 2009, PERŞEMBE


Edemezsin.

SQL-92 tablo için yabancı anahtar eklemek için sözdizimi aşağıdaki gibi olurdu

ALTER TABLE child ADD CONSTRAINT fk_child_parent
                  FOREIGN KEY (parent_id) 
                  REFERENCES parent(id);

SQLite desteği yokALTER TABLE komut (sqlite.org: SQL Features That SQLite Does Not Implement) ADD CONSTRAINT varyant.

Bu nedenle, sqlite 3.6.1 yabancı anahtarı eklemek için tek yol şöyle: CREATE TABLE sırasında

CREATE TABLE child ( 
    id           INTEGER PRIMARY KEY, 
    parent_id    INTEGER, 
    description  TEXT,
    FOREIGN KEY (parent_id) REFERENCES parent(id)
);

Ne yazık ki geçici bir tabloya varolan verileri kaydetmek, eski tabloyu silip, FK kısıtlaması ile yeni bir tablo oluşturmak, geçici masadan verileri kopyalayın. (sqlite.org - FAQ: Q11)

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • CorridorDigital

    CorridorDigi

    17 Mayıs 2010
  • My name is Festis and I'm free

    My name is F

    2 EKİM 2011
  • Mr_BrettHooge

    Mr_BrettHoog

    3 Ocak 2011