Est-ce même possible?
Mon cas d'utilisation est une table de grand livre, avec la condition qu'une fois un enregistrement créé, il doit être en lecture seule, c'est-à-dire que personne ne doit pouvoir le modifier ou le supprimer. Cela ne s'applique qu'à la table du grand livre et aux tables ayant une relation directe avec elle - il existe d'autres tables dans le même schéma qui seront mises à jour / supprimées normalement.
D'après ce que je comprends, à des fins d'intégrité des données, ce type de contraintes devrait être appliqué à la couche de base de données, mais je ne trouve pas de moyen propre et largement accepté de le faire - est-ce un cas d'utilisation où je ferais mieux de le faire dans la couche application?
L'idéal serait de trouver un moyen de le faire en langage SQL simple, afin d'être indépendant de la plate-forme de base de données utilisée, car cela peut être sujet à changement, mais je me rends compte que cela peut être trop demander, donc si cela a pour être dépendant de la plate-forme, une certaine saveur de MySQL est préférée.
Merci!
la source
Les autorisations semblent être le choix évident - mais vous pouvez également utiliser le moteur de stockage ARCHIVE . Ce moteur de table est conçu pour enregistrer de grandes quantités de données qui ne changeront pas:
La différence avec les autorisations est que quelqu'un avec des privilèges étendus pourrait toujours modifier les données sur la plupart des autres types de table, tandis que ARCHIVE ne permet à personne de modifier les données qui sont déjà dans la table.
la source
REPLACE
soit une sorte deUPDATE
! "REPLACE fonctionne exactement comme INSERT, sauf que si une ancienne ligne de la table a la même valeur qu'une nouvelle ligne pour une CLÉ PRIMAIRE ou un index UNIQUE, l'ancienne ligne est supprimée avant l'insertion de la nouvelle ligne. Voir Section 13.2.5 , "INSERT Syntax". "Regardez dans « Point in Time Architecture » ou « Temporal Database Architecture »
Conception de base de données: une architecture à un moment précis
Base de données temporelle
L'idée de base des deux est que vous devez soit ajouter des données sans les supprimer, soit les stocker de manière à pouvoir extraire les données telles qu'elles existent actuellement ... ou existaient à une date / heure précédente.
question connexe ici: comment créer une architecture à point dans le temps dans mysql ,
la source