委员会表(id,name,....)会编号,名称 委员表(idno,name,id...)委员编号,委员姓名,所属会编号select idno,name,(select name from 委员会表 where id=idno) noname from 委员表 group by id having cound(1)>=3;
选择了DEFERRABLE选项 可以通过SET CONSTRAINTS 语句控制约束检查 文档上面的例子: Setting Constraints Examples The following statement sets all deferrable constraints in this transaction to be checked immediately following each DML statement: SET CONSTRAINTS ALL IMMEDIATE; The following statement checks three deferred constraints when the transaction is committed: SET CONSTRAINTS unq_name, scott.nn_sal, adams.pk_dept@dblink DEFERRED; 注:以上测试范例来自ORACLE文档
委员表(idno,name,id...)委员编号,委员姓名,所属会编号select idno,name,(select name from 委员会表 where id=idno) noname from 委员表 group by id having cound(1)>=3;
关系数据库提倡一个依存关系
皮之不存,毛将焉附如果非要这样做的话,那就应该建立存储过程并需要辅助相应的存储点(savepoint)进行处理
不过我认为这样意义不大
但Sybase有check on commit来解决,
Oracle没有道理不支持啊 :)
2 (ord_num NUMBER, CONSTRAINT unq_num UNIQUE (ord_num)
3 INITIALLY DEFERRED DEFERRABLE);表已创建。SQL> insert into orders values(1);已创建 1 行。SQL> insert into orders values(1);已创建 1 行。SQL> commit;
commit
*
ERROR 位于第 1 行:
ORA-02091: 事务处理已重算
ORA-00001: 违反唯一约束条件 (SCOTT.UNQ_NUM)
SQL> CREATE TABLE orders2
2 (ord_num NUMBER, CONSTRAINT unq_num UNIQUE (ord_num) );
(ord_num NUMBER, CONSTRAINT unq_num UNIQUE (ord_num) )
*
ERROR 位于第 2 行:
ORA-02264: 名称已被一现有约束条件占用
SQL> CREATE TABLE orders2
2 (ord_num NUMBER, CONSTRAINT unq_num2 UNIQUE (ord_num) );表已创建。SQL> insert into orders2 values(1);已创建 1 行。SQL> insert into orders2 values(1);
insert into orders2 values(1)
*
ERROR 位于第 1 行:
ORA-00001: 违反唯一约束条件 (SCOTT.UNQ_NUM2)
SQL>
我不知道你在说什么
oracle在进行表级或者列给约束定义的时候,可以选择DEFERRABLE或者NOT DEFERRABLE选项。当选择了DEFERRABLE选项,可以将指定将约束检查推迟到事务结束。而NOT DEFERRABLE选项指定在每个DML语句即将结束时进行约束条件的检查
可以通过SET CONSTRAINTS 语句控制约束检查
文档上面的例子:
Setting Constraints Examples
The following statement sets all deferrable constraints in this transaction to be checked immediately following each DML statement:
SET CONSTRAINTS ALL IMMEDIATE;
The following statement checks three deferred constraints when the transaction is committed:
SET CONSTRAINTS unq_name, scott.nn_sal,
adams.pk_dept@dblink DEFERRED;
注:以上测试范例来自ORACLE文档
但“杀鸡杀猴各有各杀法”,不能强求一律。
百花齐放嘛。
Oracle和Sybase都是做database的,谁说他们不在相互学习。
用你的方法完全可以约束上述的一对多关系!问题解决了,BlueskyWide(谈趣者) 说的对,
我的看法和你完全一样,Sybase能做到的Oracle
一定能做到