Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Edycja bazy danych z zatwierdzeniem - mysql

Mamy coś podobnego na jednej z naszych stron, dodaliśmy kilka tabel:

users sites ... itd

Następnie mamy kilka tabel cieni:

users-shadow sites-shadow ... itd

Tabele cieni mają identyczną strukturę jak tabele rzeczywiste, z wyjątkiem dodanej linii dla użytkownika, który dokonał zmiany. Więc najpierw używamy tego zapytania, gdy zmiana jest przesyłana przez użytkownika, który potrzebuje zatwierdzenia swoich działań w bazie danych:

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

Oczywiście, upewnij się, że nie jest otwarty na wstrzyknięcie, użyj przygotowane zestawienia itp.

Po zatwierdzeniu wiersz w shadow tabela jest po prostu usuwana z shadow tabela, user_mod wartość porzucona i zmiany (wartości inne niż null) wstawione do rzeczywistej tabeli (lub zaktualizowane, jeśli id jest określony, używając ZAMIEŃ składnia). Wykonujemy tę logikę w perlu, więc niestety nie mamy do tego żadnego SQL-a.

Pamiętaj, że SQL REPLACE wykonuje DELETE i INSERT zamiast UPDATE . Będziesz musiał zmienić wszystkie wyzwalacze, aby umożliwić takie zachowanie.

Uwaga:powodem, dla którego nie użyliśmy flagi „zatwierdź”, było to, że potrzebowaliśmy możliwości zmiany istniejących rekordów. Oczywiście nie mogliśmy mieć wielu rekordów z tym samym kluczem podstawowym.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. wypełnienie wymaganej ilości za pomocą mysql

  2. uzyskaj według szerokości i długości geograficznej w laravelu 5 z innymi złączami

  3. Używanie Like In MySQL do operacji wyszukiwania przy użyciu wzorca

  4. Jaki jest najlepszy sposób na zaimplementowanie wyszukiwania podciągów w SQL?

  5. Uzyskaj rekordy miesięcznie, ale uzyskaj również zero, jeśli nie ma rekordów w tym miesiącu