J'ai une table simple comme scriptée ci-dessous.
CREATE TABLE dbo.KeyNumbers ( RowId INT IDENTITY ,ProFormaNumber NCHAR(10) NULL ,SalesOrderNumber NCHAR(10) NULL ,PurchaseOrderNumber NCHAR(10) NULL ,InvoiceCreditNoteNumber NCHAR(10) NULL ,InvoiceNumber NCHAR(10) NULL ,PurchaseInvoiceCreditNoteNumber NCHAR(10) NULL ,ModifiedDate DATETIME NULL ,CONSTRAINT PK_KeyNumbers PRIMARY KEY CLUSTERED (RowId) ) ON [PRIMARY]
4 Réponses :
La méthode évidente utilise un déclencheur sur INSERT pour être sûr que la table est vide.
Je n'ai jamais essayé cela, mais un index sur une colonne calculée peut également fonctionner: P>
alter table dbo.KeyNumbers add OneAndOnly as ('OneAndOnly'); alter table dbo.KeyNumbers add constraint unq_OneAndOnly unique (OneAndOnly);
Merci Gordon. Je vais essayer rapidement cela sur une nouvelle base de données et une nouvelle table et je vous ferai savoir.
Fonctionne magnifiquement, merci. Ont édité la question pour illustrer que cela fait.
- Je pense que cela serait plus propre et utilise les colonnes existantes
CREATE TABLE dbo.KeyNumbers ( RowId AS (1) PERSISTED ,ProFormaNumber NCHAR(10) NULL ,SalesOrderNumber NCHAR(10) NULL ,PurchaseOrderNumber NCHAR(10) NULL ,InvoiceCreditNoteNumber NCHAR(10) NULL ,InvoiceNumber NCHAR(10) NULL ,PurchaseInvoiceCreditNoteNumber NCHAR(10) NULL ,ModifiedDate DATETIME NULL ,CONSTRAINT PK_KeyNumbers PRIMARY KEY CLUSTERED (RowId) ) ON [PRIMARY]
.Vincent, merci de votre réponse.Là de nombreuses façons d'accepter de convenir avec vous à propos de sa lisibilité et de sa simplicité, et de la marquer pour cette raison. La réponse de Gordon a ouvert les yeux sur une région de SQL que je n'envisais pas auparavant et une autre nouvelle chose apprise dans le processus.
Vous pouvez également utiliser au lieu de déclencher pour accomplir la même ..
create table test ( id int ) create trigger dbo.test_trgr on dbo.test instead of insert as begin --here we check table rows,if there are no rows,iinsert..else ignore if not exists(select 1 from dbo.test) begin insert into dbo.test select * from inserted end
Définissez une des colonnes (toute colonne fera) avec:
Vérifiez la contrainte CODE>, nécessitant qu'elle est la valeur que vous voulez finalement li>
- A
Unique code> contrainte li>
ul> par exemple, si vous souhaitez que la colonne ID code> doit avoir une valeur 1 code>: p> xxx pré> Maintenant, il peut y avoir au plus 1 rangée et il doit avoir ID = 1. P> P>