sql >> Database >  >> RDS >> Mysql

Database bewerken met goedkeuring - mysql

We hebben iets soortgelijks op een van onze sites, we hebben een aantal tabellen toegevoegd:

users sites ... enz

Dan hebben we een aantal schaduwtafels:

users-shadow sites-shadow ... enz

De schaduwtabellen hebben dezelfde structuur als de echte tabellen, behalve een toegevoegde regel voor de gebruiker die de wijziging heeft aangebracht. Dus eerst gebruiken we deze query wanneer een wijziging wordt ingediend door een gebruiker die zijn/haar databaseacties moet laten goedkeuren:

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

Zorg er natuurlijk voor dat dit niet openstaat voor injectie, gebruik voorbereide verklaringen enz.

Na goedkeuring een rij in de shadow tabel wordt eenvoudig verwijderd uit de shadow tabel, de user_mod waarde verwijderd en wijzigingen (niet-null-waarden) ingevoegd in de echte tabel (of bijgewerkt als een id is opgegeven, met behulp van REPLACE syntaxis). We doen deze logica in perl, dus helaas hebben we er geen SQL voor bij de hand.

Onthoud dat SQL REPLACE doet een DELETE en een INSERT in plaats van een UPDATE . U moet eventuele triggers aanpassen om dit gedrag toe te staan.

Opmerking:de reden dat we geen 'goedkeuren'-vlag gebruikten, was dat we de mogelijkheid nodig hadden om bestaande records te wijzigen, natuurlijk konden we niet meerdere records met dezelfde primaire sleutel hebben.



  1. Proberen om innodb memcached plugin MySQL5.6.17 te installeren op ubuntu 14.04

  2. MySQL-gegevens - De beste manier om paging te implementeren?

  3. Hoe de inhoud in div te veranderen, op basis van de vervolgkeuzelijst

  4. MySQL:INT converteren naar DATETIME