database - 如何制作引用两列的检查约束?
问题描述
我想使用以下查询在 Oracle 中创建一个表 Sp:
create table SP(Order_date date ,Dely_date date check(Dely_date>Order_date));
但问题是oracle显示错误“列检查约束不能引用其他列”
但是,如果我在没有此条件的情况下创建此表,check(Dely_date>Order_date)
则会创建表。
告诉我为什么检查约束不能用于两列。
如果我使用此子句更改 SP 表, check(Dely_date>Order_date)
那么我的检查约束将正常工作。但是在创建时检查约束不能在上述条件下工作。
解决方案
这就是 Oracle 的做法——内联检查约束不能引用另一列。
解决方法?创建离线约束:
SQL> create table SP
2 (Order_date date ,
3 Dely_date date,
4 --
5 constraint ch_date check (Dely_date > Order_date)
6 );
Table created.
SQL> insert into sp values (date '2020-03-03', date '2020-02-15');
insert into sp values (date '2020-03-03', date '2020-02-15')
*
ERROR at line 1:
ORA-02290: check constraint (SCOTT.CH_DATE) violated
SQL> insert into sp values (date '2020-03-03', date '2020-04-23');
1 row created.
SQL>
推荐阅读
- windows - 用于查找带有时间戳的文件的 Windows 批处理脚本
- google-sheets-api - 如何获得无限的 Google Sheets API 读/写?
- javascript - 使用 canvas2pdf 库从 Canvas 导出 PDF
- javascript - 如何将多部分表单数据从 js 发送到 Rails?
- laravel-8 - 404 未找到但路由和控制器存在
- javascript - 当客户端不专注时,有没有办法停止服务器输入?
- javascript - 如何在 .net5 剃须刀页面 EF5 应用程序中使用 AJAX 将表单数据写入 MS SQL
- node.js - npm 不支持 Node.js v16.10.0
- javascript - contenteditable - 向当前 div 添加一个类
- python - 逐行分析python脚本