Je le tableau suivant:Comment créer une contrainte de table pour empêcher la duplication de valeurs sur deux colonnes?
CREATE TABLE [dbo].[EntityAttributeRelship](
[IdNmb] [int] IDENTITY(1,1) NOT NULL,
[EntityIdNmb] [int] NOT NULL,
[AttributeIdNmb] [int] NOT NULL,
[IsActive] [bit] NOT NULL CONSTRAINT [DF_EntityAttributeRelship_IsActive] DEFAULT ((0)),
CONSTRAINT [PK_EntityAttributeRelship] PRIMARY KEY CLUSTERED
([IdNmb] ASC) WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]) ON [PRIMARY]
Une partie des données de la table ressemble à quelque chose ceci:
IdNmb EntityIdNmb AttributeIdNmb IsActive
1 22 7 0
2 22 8 0
3 22 9 0
4 22 10 1
Je veux ajouter une contrainte pour vous assurer que personne n'ajoute ou des mises à jour un enregistrement ayant IsActive = 1, s'il existe déjà un enregistrement pour EntityIdNmb où IsActive = 1.
Comment procéder?
@Eric, si le temps le permet, voudriez-vous expliquer pourquoi la solution de vue indexée en cluster tomfut et moi présentée ne répond pas à votre demande? Je considère CI Views comme une solution élégante à ce genre de problèmes. –
@Lieven et @tomfut, j'ai créé un déclencheur pour faire cela, mais je vais essayer votre solution, car j'ai mal compris votre réponse au début. Je vous remercie. –