SORU
2 Mart 2010, Salı


Yabancı anahtar tablo sütun boş olabilir?

Örneğin, diğer tablolar için birkaç KİMLİK sütunu olan bir tablo var. Yabancı anahtar varsa veri koymak istiyorsan, dürüstlük zorlamak istiyorum. Eğer bu sütun doldurmak için daha sonra bir güncelleme yaparsam o zaman hala kısıtlama (bu büyük olasılıkla veritabanı sunucusu bağımlı, MySQL Ve Bunu masa tipi kullanıyorum) kontrol edecektir. Bu makul bir beklenti olduğuna inanıyorum, ama eğer yanılıyorsam beni düzeltin.

CEVAP
2 Mart 2010, Salı


Evet, değeri ise sadece kısıtlama zorlayabilir. Bu kolayca aşağıdaki örnek ile test edilebilir:

CREATE DATABASE t;
USE t;

CREATE TABLE parent (id INT NULL,
                     PRIMARY KEY (id)
) ENGINE=INNODB;

CREATE TABLE child (id INT NULL, 
                    parent_id INT NULL,
                    FOREIGN KEY (parent_id) REFERENCES parent(id)
) ENGINE=INNODB;


INSERT INTO child (id, parent_id) VALUES (1, NULL);
-- Query OK, 1 row affected (0.01 sec)


INSERT INTO child (id, parent_id) VALUES (2, 1);

-- ERROR 1452 (23000): Cannot add or update a child row: a foreign key 
-- constraint fails (`t/child`, CONSTRAINT `child_ibfk_1` FOREIGN KEY
-- (`parent_id`) REFERENCES `parent` (`id`))

İlk eklediğimiz parent_id BOŞ Ekle çünkü geçecek. İkinci ekleme parent tabloda bulunmayan bir değer eklemek için çalıştık beri yabancı anahtar kısıtlaması nedeniyle başarısız olur.

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Fubar Protocol

    Fubar Protoc

    21 AĞUSTOS 2010
  • NextKsa

    NextKsa

    7 EKİM 2009
  • RaverX DouBle StAg XI

    RaverX DouBl

    23 Mayıs 2008