我創建自= DATE和到= DATE但我想做出約束,使得到不能之前,從需要的字段SQL表。我的程序會檢查它,但我想學習如何用SQL強制執行它。 我以前寫過SQL,但從未真正使用約束,不知道它們是如何工作的。SQL約束:日期A在日期B之前 - 如何?
所以問題是:如何使用標準SQL,我如何確保從之前是到?
我創建自= DATE和到= DATE但我想做出約束,使得到不能之前,從需要的字段SQL表。我的程序會檢查它,但我想學習如何用SQL強制執行它。 我以前寫過SQL,但從未真正使用約束,不知道它們是如何工作的。SQL約束:日期A在日期B之前 - 如何?
所以問題是:如何使用標準SQL,我如何確保從之前是到?
create table foo
(
from_date date,
to_date date,
constraint check_dates check (from_date < to_date)
);
,或者您需要將其應用到現有的表,使用:
alter table foo
add constraint check_dates check (from_date < to_date);
PostgreSQL的手冊中包含檢查約束良好的章節:http://www.postgresql.org/docs/current/static/ddl-constraints.html#AEN2410
我認爲這是正常的SQL服務器,MySQL和oracle
ALTER TABLE myTbl
ADD CONSTRAINT chk_Dates CHECK (dtFrom < dtTo)
不適用於MySQL。引擎是有限的,不支持檢查約束。 –
我認爲你最好的選擇將使用觸發器來執行rela tionship。 –
@ D.Lambert:這絕對沒有必要。檢查約束可以更好,更高效地處理這個問題。 –
未測試ALTER TABLE dbo.Vendors ADD CONSTRAINT CK_Vendor_CreditRatingCHECK(From> To)不知道它將如何處理null – Paparazzi