SORU
26 EYLÜL 2009, CUMARTESİ


Kullanım " için;UPDATE CASCADE"

"ON DELETE CASCADE" düzenli olarak ama hiç "UPDATE CASCADE" yararlı olacak ne kadar emin değilim. ÜZERİNDE kullanmak

Tartışmanın iyiliği için bazı kod görelim.

CREATE TABLE parent (
    id INT NOT NULL AUTO_INCREMENT,
    PRIMARY KEY (id)
);

CREATE TABLE child (
    id INT NOT NULL AUTO_INCREMENT, parent_id INT,
    INDEX par_ind (parent_id),
    FOREIGN KEY (parent_id)
        REFERENCES parent(id)
        ON DELETE CASCADE
);

"ON DELETE CASCADE", eğer bir ebeveyn ile 'id' ile çocuğun kaydı silinir '3 **' otomatik olarak silinir. Bu senin için sorun olmamalı.

(1) Bu" aynı şey ne zaman 'id' üst güncellenir? yapacak "UPDATE CASCADE anlamına gelir

(2) Eğer (1) doğru, demek ki ihtiyac yoktur. kullan "ON UPDATE CASCADE" 'parent.id' değildir güncellenebilir (ya da asla güncellendi) gibi. 'AUTO_INCREMENT' ya da her zaman ayarlamak için zaman DAMGASI. Bu doğru mu?

(3) (2) kullanmalıyız şey doğru değil, "UPDATE CASCADE".

(4) ben Ne olursa (nedense) update 'child.parent_ind' bir şey yok yok, otomatik olarak silinir.

Evet, biliyorum, ama istiyorum anlamak için test programmically olabilir yukarıdaki soruyu bazıları, " eğer herhangi bir Veritabanı veya satıcı bağımlı olduğunu da biliyorum.

Biraz ışık tutmak lütfen.

CEVAP
26 EYLÜL 2009, CUMARTESİ


Eğer birincil anahtar değeri otomatik olarak artan bir kimlik ise, UPDATE CASCADE için gerçek bir kullanım olurdu doğru.

Ancak, birincil anahtar, 10 basamaklı UPC barkod ve genişleme nedeniyle, 13 basamaklı UPC barkod olarak değiştirmeniz gerektiğini söylüyor. GÜNCELLEME bu durumda, ÇAĞLAYAN değer, yabancı anahtar başvuruları bu değer ve tablo buna göre değişir birincil anahtarı değiştirmek için izin verecek.

Ana tabloda olmayan bir şey için çocuğun KİMLİĞİNİ değiştirirseniz #4--referans (ve tutarlılığı var), yabancı anahtar bir hata almalısınız.

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • A Alkhaldi

    A Alkhaldi

    12 Mayıs 2007
  • Richard Laxa

    Richard Laxa

    30 AĞUSTOS 2012
  • Visual Life

    Visual Life

    3 Temmuz 2006