我不想讓我的數據庫用戶輸入比2017-03-18
更大的日期。如何將這個約束添加到我的表中? 這是對的嗎?檢查SQL中的約束條件
(Year([ContractEnd])<2017) and (Month([ContractEnd])<03) and (Day([ContractEnd])<18)
我不想讓我的數據庫用戶輸入比2017-03-18
更大的日期。如何將這個約束添加到我的表中? 這是對的嗎?檢查SQL中的約束條件
(Year([ContractEnd])<2017) and (Month([ContractEnd])<03) and (Day([ContractEnd])<18)
嘗試
[ContractEnd] DATE CHECK ([ContractEnd] <= '20170318')
您可以像添加約束到現有的表像這樣:
alter table t add constraint chk_ContractEnd_lt_20170319
check (ContractEnd<'20170319');
rextester演示:http://rextester.com/FQWFMI88817
create table t (
id int not null identity(1,1)
, ContractEnd date
/* at table creation */
, constraint chk_ContractEnd_lt_20170319 check (ContractEnd<'20170319')
)
alter table t drop constraint chk_ContractEnd_lt_20170319;
/* to existing table */
alter table t add constraint chk_ContractEnd_lt_20170319
check (ContractEnd<='20170318');
insert into t values ('20161231')
insert into t values ('20170318')
/* all good */
insert into t values ('20170319')
/* -- Error, constraint violation */
如果數據類型是'datetime'或'datetime2',那麼使用'ContractEnd''20170102' '可能是必要的。 –
@BaconBits的確如此。 – SqlZim
什麼的'型ContractEnd'? 'DATETIME'? – Marusyk
不,這是不對的。您的代碼中的值與您聲明的日期不符。並且沒有必要像這樣檢查一個日期(時間)。 –
列類型是Date。 – kwram