Nedir birbirine başvuru için gereken kayıtları ile iki tablo doldurmak için en iyi yolu nedir?

3 Cevap php

Her diğer birincil anahtar bir referans gereken iki tablolardaki kayıtları doldurmak için en iyi yolu nedir?

Düşüncelerim ya hem db ya da aşağıdaki komutları karmaşık bir dizi tarafından yazılmış bir kez doldurulur aralarında bir "bağlantı" tablosunu yaşıyorsanız

Insert1
get identity1
Insert2 
get identity2
update 1

Nasıl bu bir mySQL veritabanına bağlı iken PHP yapmak ve bütünlüğünü korumak istiyorsunuz?

Yani nasıl bunu hakkında gitmek istiyorum eğer, hareketleri kullanmak gerekir?

3 Cevap

Tabloları birbirine başvurmak gerekir neden ben sorabilir miyim. Düz bir 1:01 ise sadece tablolardan biri yabancı anahtarı koyarak öneririm. arama gibi kolay. Ve yabancı anahtar düzgün zorunlu olabilir. aksi takdirde tabloları hem birbirine başvuru için gereken bir tavuk / yumurta senaryo içine çalıştırın. ama bir ilk oluşturulmalıdır. Bu veritabanı olmayan tutarlı bir durumda olacak belli bir noktada demektir.

Eğer gerçekten bunu yapmak gerekiyorsa, o zaman kesinlikle hareketleri kullanmak - yetim kayıtlarını önlemek için

mysql_query("START TRANSACTION");
if(!mysql_query($query1))
{   $errmsg=mysql_error();
    mysql_query("ROLLBACK");
}
else
{  $id1=mysql_insert_id();
   $query2="insert into.....$id1...");
   if(!mysql_query($query2))
   {   $errmsg=mysql_error();
       mysql_query("ROLLBACK");
   }
   $id2=mysql_insert_id();
   if(!mysql_query("update tabel1 set my_key=$id2 where key=$id1"))
   {   $errmsg=mysql_error();
       mysql_query("ROLLBACK");
   }

}
mysql_query("COMMIT");

Sen işlemleri kullanmanız gerekir. Eğer InnoDB depolama motoru (Ama myisam için) kullanıyorsanız MySQL, yeni sürümlerinde bu destekler.