Ho una tabella, similevincolo UNIQUE controllato da una colonna di bit
FieldsOnForms(
FieldID int (FK_Fields)
FormID int (FK_Forms)
isDeleted bit
)
La coppia (FieldID, FormID) dovrebbe essere unico, ma solo se la riga non viene eliminata (isDeleted = 0).
È possibile definire un tale vincolo in SQLServer 2008? (senza utilizzare i trigger)
P.S. L'impostazione (FieldID, FormID, isDeleted) per essere univoci aggiunge la possibilità di contrassegnare una riga come eliminata, ma mi piacerebbe avere la possibilità di impostare n righe (per FieldID, FormID) a isDeleted = 1, e di avere solo una con isDeleted = 0
+1 risposta migliore ... – gbn
Anche se ho qualche errore, a causa del campo di bit (la conversione di una colonna nel tipo di dati di una costante non è supportata per gli indici filtrati), questo sembra essere il soluzione che stavo cercando. – jaraics
@jaraics - Ho appena creato la tabella nella tua domanda, e poi l'indice nella mia risposta, ed è stata creata senza errori. Inoltre, se si verificano disallineamenti di tipo di dati, in genere è preferibile CAST (o CONVERT) la costante al tipo di colonna, piuttosto che il contrario. Non sono sicuro se ciò risolverà il tuo problema. –