取得系统日期要用sysdate,这属于变量,所以不能用在约束中,要实现你的限制就只能使用触发器的方式了,写一个insert update触发器就可以了.
创新互联是专业的泰来网站建设公司,泰来接单;提供网站制作、做网站,网页设计,网站设计,建网站,PHP网站建设等专业做网站服务;采用PHP框架,可快速的进行泰来网站开发网页制作和功能扩展;专业做搜索引擎喜爱的网站,专业的做网站团队,希望更多企业前来合作!
肯定是可以限制到 exists子查询 中的(m.calltime - n.importtime) * 2448 的 m.calltime的。
因为 exists子查询,就是针对每一个主查询的数据,查询子查询中是否有符合条件的数据。
至于其他原因,需要你对数据进行分析。
因为直接写check(timesysdate)oracle不允许,所以可以考虑给这个表多增加一个列,其默认值就是sysdate,然后用check约束判断约束列必须小于默认值是sysdate的这一列.
create table table_name
(
ttime date,
v_ttime date default sysdate,
constraint ck_ttime check(ttimev_ttime)
);
比如这样
以目前三大主流数据库oracle,mysql,sqlserver分别说明。
如果是oracle,需要用to_date函数将字符型数据转换,插入到数据库的日期型数据中。
如:
1
2
3
4
5
create
table
test
(cdate
date);
insert
into
test
values
(to_date('2015-08-13','yyyy-mm-dd'));
commit;
如果是mysql或者sqlserver,可直接以字符形式插入,数据库会自动将字符转成日期。
1
2
3
4
create
table
test
(cdate
datetime);
insert
into
test
values
('2015-08-13');
需要注意:oracle中插入后需要commit(提交),否则在关闭当前会话后,插入是不成功的