sql >> Databasteknik >  >> RDS >> Mysql

Databasredigering med godkännande - mysql

Vi har något liknande på en av våra sajter, vi har lagt till ett gäng tabeller:

users sites ... osv

Sedan har vi ett gäng skuggbord:

users-shadow sites-shadow ... osv

Skuggtabellerna har identiska strukturer som de riktiga tabellerna förutom en extra rad för användaren som gjorde ändringen. Så först använder vi den här frågan när en ändring skickas av en användare som behöver godkänna sina databasåtgärder:

REPLACE INTO users-shadow (user_mod,id,username,password,salt...) VALUES (16,50,'bob','stuff','salt'...);

Se till att detta inte är öppet för injektion, använd förberedda uttalanden etc.

När det är godkänt, en rad i shadow tabellen tas helt enkelt bort från shadow tabellen, user_mod värde tappats och ändringar (icke-nullvärden) infogas i den verkliga tabellen (eller uppdateras om ett id anges med REPLACE syntax). Vi gör den här logiken i perl så tyvärr har vi ingen SQL till hands för det.

Kom ihåg att SQL REPLACE gör en DELETE och en INSERT snarare än en UPDATE . Du måste ändra alla utlösare för att tillåta detta beteende.

Obs! Anledningen till att vi inte använde en "godkänn"-flagga var att vi behövde möjligheten att ändra befintliga poster, naturligtvis kunde vi inte ha flera poster med samma primärnyckel.



  1. Hur man testar min ad-hoc SQL med parametrar i Postgres frågefönster

  2. Postgres tid med tidszonslikhet

  3. Avbryt lika perioder i slutet av månaden

  4. Jag vill ha timmar, min, andra skillnad från två datum och tid