我在我的SQL Server(2008)數據庫中有一個非有向圖表,我想約束來防止重複。 我的鏈接表有2列,(城市1,城市2),這兩個整數引用到城市表中。我可以使用以下內容:非有向圖的唯一約束格式 - 給定(1,2),阻止(2,1)
ALTER TABLE dbo.CityConnections
ADD CONSTRAINT CK_CityConnections_OneWayOnly UNIQUE (City1, City2)
這是我想要的一半,但這並不妨礙添加「反向」連接。
谷歌給我
... UNIQUE (MIN(City1,City2), MAX(City1,City2))
它看起來像它會做我想要什麼,但語法是無效的。
我也嘗試過使用CASE的複雜約束,但我無法得到正確的語法。
我該如何做到這一點?
+1。這就是我通常會推薦的。或者,可以添加觸發器,以便插入和更新可以按任一順序工作。 –
只是爲了完整性,我觸發看起來是這樣的: 'CREATE TRIGGER TRIG_CityConnection_Insert ON [CityConnections] INSTEAD INSERT 作爲 BEGIN \t SET NOCOUNT ON; \t INSERT [CityConnections] \t選擇(CASE當[City1] <[City2] THEN [City1] ELSE [City2] END)爲City1,(CASE當[City1]> [City2] THEN [City1] ELSE [City2 ] END)as City2 \t FROM inserted; END' – Taoist