2010-02-24 5 views
1

J'ai une table avecVérifiez si seul enregistrement unique existe

GID 
ID 
DefaultA 
DefaultB 
DefaultC 
DefaultD 
DefaultE 
DefaultF 

mon exigence est qu'il y ait toujours un enregistrement dans la base de données toujours.

Dans le frontal si l'utilisateur final essaie de mettre à jour son ok puisqu'il mettra à jour l'enregistrement existant. Mais s'il essaye d'entrer un nouvel enregistrement je dois l'arrêter.

Répondre

1

Éliminer tous les insérer, supprimer les autorisations de tous les utilisateurs ...

ou,

Ajoutez un déclencheur qui annule toute transaction qui tente de supprimer ou d'insérer un enregistrement.

Create Trigger MyTableEnsureSingleRowTrigger 
On MyTable for Insert, Delete 
As Rollback Transaction 
2

Créez un champ de clé primaire, tapez tinyint, et définissez la contrainte de sorte que la valeur ne puisse être que "1" (vous pouvez utiliser un index unique sur le champ). Définissez la valeur du champ sur "1" pour votre enregistrement unique. Ensuite, aucun autre enregistrement ne peut être entré.

Si l'on suppose GID est la clé primaire, voici le code sql pour ajouter la contrainte à votre table existante:

ALTER TABLE dbo.address ADD CONSTRAINT 
    single_record CHECK (GID = 1) 
Questions connexes