我在當前位置遇到需要分配TLC的數據庫,至少可以這麼說,有許多交叉引用表都具有相同的架構模式明智,並使用觸發器來強制執行業務邏輯或域看起來完整。我想弄清楚是否可以用約束替換一些觸發器。以下是符合此模式的典型表格定義。這些表格中大約有400個都使用相同的基於觸發器的解決方案。如何在不使用觸發器的情況下爲一對多關係設置額外約束
CREATE TABLE dbo.FooXRef
(
FooXRefID INT NOT NULL IDENTITY(1,1) PRIMARY KEY,
BarID INT NOT NULL CONSTRAINT [fk_Bar] FOREIGN KEY REFERENCES dbo.Bar(BarID),
DefaultRecord BIT NOT NULL CONSTRAINT [DF_FooXRef_Default] DEFAULT(1)
);
的規則是可以存在的具有相同值的記錄無限數量BarID
和DefaultRecord = 0
,但只能存在一個記錄,其中BarID
是表和DefaultRecord = 1
。
我需要設置哪種類型的約束以允許組合?
此表結構和觸發器強制執行此組合在當前數據庫中爲400,而在下一個數據庫中則執行此操作。是不是可以設置一個適用於這種情況的約束條件?
不幸的是,基於該示例,您必須以編程方式進行維護。 –
這個例子[這裏](https://technet.microsoft.com/en-us/library/ms188258%28v=sql.105%29.aspx)能給你什麼想法嗎? – HABO