Birden fazla tablo veri ekleme PHP MySQL

2 Cevap php

I'm trying to make an experimental web application which minimises redundant data. I have three example tables set up like so:

Table one
ID | created_at (unix timestamp) | updated_at (unix timestamp)

Table two
ID | Foreign Key to table one | Title

Table three (pages)
ID | Foreign Keys to both table one and two | Content | Metadata

Uygulamada yarattığı her şeyi olma fikri oluşturma / düzenleme zamanınız olacak.

Çoğu (hepsi değil) işler başlığı (Örneğin bir sayfa ya da gitmek için bir sayfa için bir bölüm) sahip olacaktır.

Son olarak, bazı şeyler, bir sayfa için, örneğin içerik ve meta kendilerine özgü nitelikleri vardır.

Ben birden fazla tablo içine veri girmek için en iyi şekilde çalışmak için çalışıyorum. Ben, PHP birden fazla insert sorguları yapmak cari işlemde oluşturulan satır takip ve işlemin bir sonraki bölümü başarısız gerektiğini bu satırları silmek olabilir biliyorum. PHP script tamamen ölürse silmeler tüm tamamlanabilir önce Ancak, bu vermeyebilir.

MySQL insert sorgusu Bölünecek izin verecek herhangi bir dahili mantığı var mı? Bir tetikleyici bu tür işlemin idare edebilmek veya onun yeteneklerinin ötesinde misiniz?

Herhangi bir tavsiye, düşünce veya fikirler büyük mutluluk duyacağız.

Teşekkürler!

2 Cevap

Bir çözüm "ya hep ya hiç" davranışı elde etmek için izin veren, Transactions kullanmak olacaktır.

Fikir şöyledir:

  • Eğer bir hareketi başlatmak
  • Eğer ekler / güncelleştirmeler yapmak
  • herşey yolunda ise, işlem işlemek; Bu işlem sırasında yaptığı her şeyi tasarruf edecek
  • değilse, geri alma hareketi; ve bunu her şeyi yaptım iptal edilecektir.
  • Eğer taahhüt ve bağlantısız (if your PHP script dies, for instance) yoksa, hiçbir şey taahhüt edilecek ve un-taahhüt işlem sırasında ne yaptığını otomatik olarak geri alınır.

Detaylı bilgi için, MySQL için, 12.4.1. START TRANSACTION, COMMIT, and ROLLBACK Syntax de bir göz atabilirsiniz.


Note that transactions are only available for some DB engines :

  • MyISAM işlemleri desteklemiyor
  • InnoDB etmez (it also supports foreign keys, for instance -- it's far more advanced that MyISAM).

Birden uçlar için bir yordam oluşturmak ve PHP size prosedürü çağırır.