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

  • DavidParody

    DavidParody

    17 EKİM 2009
  • Paulo Bautista

    Paulo Bautis

    21 Aralık 2008
  • TopDJMag TV

    TopDJMag TV

    29 Temmuz 2010