PHP MySQL birincil anahtarı Özü

1 Cevap php

Ben bir PHP komut dosyası oluşturduk ve ben birincil anahtar ayıklamak için eksik yaşıyorum, ben aşağıda akışını verdik, ben birincil anahtarı almak için nasıl değiştirebileceğini bana yardım edin

Ben Joomla için çalışan, MySQL DB kullanıyorum, Benim gereksinimi ekleme / güncelleme / yani ben Denetim yapıyorum, herhangi bir tabloda silme ve tetikleyicileri kullanarak başka bir bağımsız denetim, tablo içinde saklamak gibi aktiviteyi takip ediyor. DB'ın tablo yapısı: Birkaç tablolar herhangi PK ne de otomatik artış anahtarı var yok

Benim komut dosyası akışı:

  1. Ben DB tüm tablo dışarı getir.
  2. Ben tablo herhangi bir tetikleyici sahip olup olmadığına bakın.
  3. Eğer evet ise o zaman böylece sonraki tablo ve kontrol etmek için hareket eder.
  4. Herhangi bir tetikleyici bulmak does'nt o zaman, tablo için tetikler oluşturur, öyle ki

    • ilk kontrolleri tablo (yapılan her değişiklik Takip denetim tablo eklemek için) herhangi bir birincil anahtar veya varsa
    • Bu birincil anahtar varsa o tetiğin oluşturulmasında daha fazla kullanır.
    • herhangi PK bulmak değilse o zaman denetim tabloya herhangi id takılmadan tetiği oluştururken daha ilerler

Now here, My problem is I need the PK every time so that I can record the id of any particular table in which the insert/update/delete is performed, so that further i can use this audit track table to replicate in production DB.. Now as I haave mentioned earlier that I am not available with PK/auto-incremented in some table, then what should I do get the particular id in which change is done?

Bana yol ... lütfen GEEKS!

1 Cevap

Ben hemen sorunuzu anlamak ise, hiçbir birincil anahtar ve benzersiz bir tanımlayıcı başka hiçbir tür tablo satır için benzersiz bir tanımlayıcı gerekir. Yani bildiğim kadarıyla gördüğünüz gibi yapmak kolay değil. Diğer veritabanları benzersiz Row kimlikleri var, ama mySQL.gibi değil. Sen could satırı denemek ve tanımak için her sütunun değerini kullanabilirsiniz, ancak bu kadar yinelenen-güvenli değil - aynı değerleri içeren iki veya daha fazla satır olabilir. Yani, benzersiz bir tanımlayıcı olmaksızın, bu basitçe yapılabilir edilemez bir şeydir, derim.

Bu SO soru bazı fikirler:

MySQL: is there something like an internal record identifier for every record in a MySQL table?