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

  • Michael Neal

    Michael Neal

    2 Mayıs 2009
  • trickycharms

    trickycharms

    6 Aralık 2013
  • World Science Festival

    World Scienc

    1 Mayıs 2008