sql >> Database teknologi >  >> RDS >> Mysql

Databaseredigering med godkendelse - mysql

Vi har noget lignende på et af vores websteder, vi har tilføjet en masse tabeller:

users sites ... osv.

Så har vi en masse skyggetabeller:

users-shadow sites-shadow ... osv.

Skyggetabellerne har identiske strukturer som de rigtige tabeller bortset fra en tilføjet linje til den bruger, der har foretaget ændringen. Så først bruger vi denne forespørgsel, når en ændring indsendes af en bruger, der skal have godkendt sine databasehandlinger:

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

Selvfølgelig skal du sørge for, at dette ikke er åbent for injektion, brug forberedte erklæringer osv.

Når det er godkendt, en række i shadow tabellen fjernes simpelthen fra shadow tabellen, user_mod værdi droppet og ændringer (ikke-nullværdier) indsat i den rigtige tabel (eller opdateret, hvis et id er angivet ved hjælp af REPLACE syntaks). Vi laver denne logik i perl, så desværre har vi ingen SQL ved hånden til det.

Husk at SQL REPLACE laver en DELETE og en INSERT i stedet for en UPDATE . Du bliver nødt til at ændre eventuelle udløsere for at tillade denne adfærd.

Bemærk:Grunden til, at vi ikke brugte et "godkend"-flag, var, at vi havde brug for muligheden for at ændre eksisterende poster, selvfølgelig kunne vi ikke have flere poster med den samme primære nøgle.



  1. PostgreSQL:Advarsel:Konsol kodetabel (437) adskiller sig fra Windows kodetabel (1252)

  2. MySQL-sammenkædningsoperatør

  3. Bemærk:Brug af udefineret konstant

  4. Postgres returnerer en standardværdi, når en kolonne ikke eksisterer