Sie können den Einsatz auf Tabellen-Privilegien machen (vorausgesetzt, wenn Sie die entsprechenden Berechtigungen festgelegt haben Einsatz zu blockieren/löschen, und Sie sollten nicht die Privilegien mehr aktualisieren, jedoch hat jeder Benutzer die Privilegien erneut die Rechte außer Kraft setzen können)
legen Sie die one-and-only-one Rekord ersten dann durch disable INSERT, UPDATE, DROP
in Spalte Table_priv
mysql> desc tables_priv;
+-------------+-------------------------------------------------------------------------------------------------------------------------+------+-----+-------------------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------------+-------------------------------------------------------------------------------------------------------------------------+------+-----+-------------------+-------+
| Host | char(60) | NO | PRI | | |
| Db | char(64) | NO | PRI | | |
| User | char(16) | NO | PRI | | |
| Table_name | char(64) | NO | PRI | | |
| Grantor | char(77) | NO | MUL | | |
| Timestamp | timestamp | NO | | CURRENT_TIMESTAMP | |
| Table_priv | set('Select','Insert','Update','Delete','Create','Drop','Grant','References','Index','Alter','Create View','Show view') | NO | | | |
| Column_priv | set('Select','Insert','Update','References') | NO | | | |
+-------------+-------------------------------------------------------------------------------------------------------------------------+------+-----+-------------------+-------+
8 rows in set (0.00 sec)
Ich bin neu bei Triggern ... Könnten Sie mir ein Beispiel für einen Trigger geben, der alle Einfügungen, Aktualisierungen und Löschungen an einer bestimmten Tabelle stoppt? – benjisail
Überprüfen Sie die in http://stackoverflow.com/questions/2981930/mysql-trigger-to-prevent-insert-under-certain-conditions angegebene Problemumgehung. – kvista
BTW, denken Sie daran, dass Sie auch einen AFTER-Trigger schreiben können an " bereinigen "schlechte Daten. Im Idealfall würden Constraints verhindern, dass die Daten von vornherein in die Tabelle gelangen. Wenn Sie jedoch an die Grenzen dessen, was ich oben beschrieben habe, stoßen (und ich gebe zu, Trigger erfüllen nicht alle Anforderungen), könnten Sie eine "Bereinigung" vornehmen "Annäherung nach der Tat. Beachten Sie außerdem, dass Sie, wenn Sie sicherstellen müssen, dass nur eine Zeile in der Tabelle für Leser vorhanden ist, immer eine Sicht aus der Basistabelle erstellen können, die die Anzeige von Daten verhindert, die Sie nicht haben möchten Weg. – kvista