我有一個「旅行」表日期列(旅行日期),但我不需要重複旅行的一天,所以我想知道如果我可以做一個獨特的約束在日期的一部分使用SQL Server 2014年 我創建這個表如何在不考慮年份的情況下對日期類型列創建UNIQUE約束?
CREATE TABLE trips
(
ID int IDENTITY(1,1) PRIMARY KEY not null ,
day_of_trip date not null,
time_of_trip time not null,
cost money not null,
passengers int not null,
bus_id int not null,
trans_comp_id int not null,
route_id int not null,
CONSTRAINT UK_time UNIQUE (day_of_trip,time_of_trip,bus_id),
FOREIGN KEY (bus_id) REFERENCES bus(id),
FOREIGN KEY (trans_comp_id) REFERENCES trans_comp(id),
FOREIGN KEY (route_id) REFERENCES routes_(id)
)
但就像 第一次在day_of_trip插入數據時:2015年1月2日 第二次:2015年5月8日
它給因錯誤
Msg 2627, Level 14, State 1, Line 7
Violation of UNIQUE KEY constraint 'UK_time'. Cannot insert duplicate key in object 'dbo.trips'. The duplicate key value is (2015-01-02, 06:20:00.0000000, 2).
我想在2015年有不止一次的旅行,但不在2015年2月15日。
請編輯與有效和無效日期的例子來支持你的問題。 –
是編輯有用嗎? @GordonLinoff – user3159060
你的約束應該做你想做的。它看起來像你的第二次插入是'2015-01-02',而不是'2015-05-08'。 –