Tom: MySQL: Autoimcrement ohne Key?

Beitrag lesen

Hello,

Ich brauch die id aus dem simplen Grund das mein PHP Framework (CakePHP) nur single Keys unterstützt ;)

Benötigst Du denn eine (konsequente) Paginierung, also eine fortlaufende Numerierung der entry_id, oder reicht Dir, wenn die bestimmte Reihenfolge eingehalten werden kann?

Dann kannst Du den künstlichen (redundaten) Index auch über

BLOG_ID + MESSAGE_ID aufbauen.

Das bedeutet, dass Du dann mehrere Tabellen mit AutoIndex baust:

populate
      id_populate   = id_blog + id_message
      -----------

blog
      id_blog
      -------

message
      id_message
      ----------

Die lassen sich mit last_insert_id() in gestaffelten Stored Procedures verwalten, ohne dass man irgendwelche Locks benutzen müsste. WEnn für den Blog die Message erstellt wurde, wird deren ID mit der des Blogs zusammengebaut und da diese Kombination immer Unique ist mit ruhigem Gewissen in die Tabelle mit dem Künstlichen Key übernommen.

Für den Zugriff auf einen derartigen zusammengebauten Datensatz kann man sich dann Stored Procedures (also 4 Stück für Select, Update, Insert, Delete) schreiben. Der Kunst-Key muss dann so gestaltet sein, dass er von deinem mangelhaften Framework benutzt und von den stored Procedures bequem zerlegt werden kann.

In der Hüll-Tabelle (Populate) kann dann auch verwaltet werden, ob der Eintrag freigegeben, gesperrt oder bearbeitet werden kann.

Der Direktzugriff auf BLOG und MESSAGE durch die API wird unterbunden.

Liebe Grüße aus dem schönen Oberharz

Tom vom Berg

--
Nur selber lernen macht schlau
http://bergpost.annerschbarrich.de