现有这样一张表 T_BOOK_SALLS,字段定义如下: SALLID NUMBER PK BOOKID NUMBER FK CATLOGID NUMBER FK ORIGNAL_PRICE NUMBER(10,2) GIVEN_PRICE NUMBER(10,2) SALL_PRICE NUMBER(10,2)
现在因为种种原因,要求表中当BOOKID和CATLOGID相同时,ORIGNAL_PRICE和GIVEN_PRICE必须也相同,Oracle提供的约束好象不能实现这种要求,请教大家有
没有什么好的办法能从数据库级别来实现?万分感谢您的指教
现在因为种种原因,要求表中当BOOKID和CATLOGID相同时,ORIGNAL_PRICE和GIVEN_PRICE必须也相同,Oracle提供的约束好象不能实现这种要求,请教大家有
没有什么好的办法能从数据库级别来实现?万分感谢您的指教
解决方案 »
- 急救 Oracle UCM 安装
- 几个基础问题,还请多多指教!
- 找个 PL-SQL 语法官方文档
- 这个sql怎么写??/急
- 简单的查询语句问题
- 用Oracle建立在线归档数据库
- 给操作系统打补丁时候,要重启服务器。再重启服务器前,必须shutdown 数据库吗?
- 我在windows 2003装了oracle 版本:CORE 9.0.1.1.1 Production,如何升级到9.2.0.4.0
- 十万火急,高分求助,求一个ORACLE过程!(100分)在线等待!
- Insert into tablex Select...不能运行阿
- oracel中的or模式的sql语句该怎么写?
- ORCALE 中跨版本数据恢复要注意哪些问题?
T@RAC>alter table a add constraint ch check ((case when a=b then case (c-d) when 0 then 0 else 1 end else 0 end ) = 0);Table altered.Elapsed: 00:00:00.42
T@RAC>insert into a values(1,1,2,null);
insert into a values(1,1,2,null)
*
ERROR at line 1:
ORA-02290: check constraint (T.CH) violated
Elapsed: 00:00:00.06
T@RAC>insert into a values(1,1,2,3;
insert into a values(1,1,2,3
*
ERROR at line 1:
ORA-00917: missing comma
Elapsed: 00:00:00.03
T@RAC>insert into a values(1,1,2,3);
insert into a values(1,1,2,3)
*
ERROR at line 1:
ORA-02290: check constraint (T.CH) violated
Elapsed: 00:00:00.01
T@RAC>insert into a values(1,0,2,3);1 row created.Elapsed: 00:00:00.10
T@RAC>insert into a values(1,null,2,3);1 row created.Elapsed: 00:00:00.28
T@RAC>
目的是当row a 的BOOKID和CATLOGID与row b的相同时 row a和b必须要具有相同的ORIGNAL_PRICE和GIVEN_PRICE
十分抱歉浪费了您的时间
因为依赖于distinct,所以需要实现前面提出的那种约束.