Sho*_*raB 3 sql oracle check-constraints
我创建了一个名为Project的表,其中有两列ProjectID和StartDate.我想创建一个约束,以确保所包含的日期始终等于今天或未来日期.
我已经尝试了下面的代码,但得到了一个缺少表达式错误.仅在创建表后添加约束.
CREATE TABLE PROJECT
(ProjectID NUMBER(7),
StartDate date NOT NULL,
CONSTRAINT PK_PROJECTID PRIMARY KEY (ProjectID)
);
ALTER TABLE PROJECT
ADD CONSTRAINT PROJECT_Check_StartDate CHECK(StartDate => Current_date);
Run Code Online (Sandbox Code Playgroud)
Gor*_*off 11
您的近端错误是正确的操作符>=,而不是=>.
修复该问题只会产生更具存在性的错误:
ORA-02436:CHECK约束中错误指定的日期或系统变量
也就是说,您不能在check约束中引用动态值,并且当前日期/时间就是这样的值.
最简单的选择是使用触发器来强制执行约束.一种"种类"的疯狂选项是存储记录的创建日期(这是一个好主意),然后将未来部分存储为另一列:
create table . . . (
daysInTheFuture number, -- fractional days
CreatedAt date default sysdate,
constraint chk_t_number check (daysInTheFuture >= 0)
);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
94 次 |
| 最近记录: |