Mysql
 sql >> база данни >  >> RDS >> Mysql

Редактиране на база данни с одобрение - mysql

Имаме нещо подобно на един от нашите сайтове, добавихме куп таблици:

users sites ... и т.н.

След това имаме куп таблици в сянка:

users-shadow sites-shadow ... и т.н.

Сенчестите таблици имат идентични структури с реалните таблици, с изключение на добавен ред за потребителя, който е направил промяната. Така че първо използваме тази заявка, когато е подадена промяна от потребител, който трябва да получи одобрение на своите действия в базата данни:

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

Очевидно се уверете, че това не е отворено за инжектиране, използвайте подготвени отчети и т.н.

При одобрение, ред в shadow таблицата просто се премахва от shadow таблицата, user_mod стойността е отпаднала и промените (ненулеви стойности) са вмъкнати в реалната таблица (или актуализирани, ако id е посочен, като се използва ЗАМЕНЯНЕ синтаксис). Ние правим тази логика в perl, така че за съжаление нямаме под ръка SQL за нея.

Запомнете този SQL REPLACE прави DELETE и INSERT вместо UPDATE . Ще трябва да промените всички тригери, за да позволите това поведение.

Забележка:Причината, поради която не използвахме флаг за „одобрение“, беше, че се нуждаехме от възможността да променяме съществуващи записи, разбира се, не можехме да имаме множество записи с един и същи първичен ключ.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да подадете няколко колони към променлива в php

  2. Миграция на MySQL към SQL Server

  3. SQL за създаване на матрична таблица

  4. Как избирате всеки n-ти ред от mysql

  5. MYSQL Поръчка от друга таблица