问几个约束的问题

weblogicfan 2005-04-19 07:22:42
1.我想更改外键约束的引用行为,比如说原来是delete set null,我想改为delete cascade
那个alter table ....的语句怎么写的?

2.有表dept和employees,其中dept表的deptno字段被employees的deptno字段所引用,并且已设置成
delete set null引用行为,当我输入
SQL> delete from dept where deptno='10';

ERROR 位于第 1 行
ORA-01407: 无法更新 ("SYSTEM"."EMPLOYEES"."DEPTNO") 为 NULL

权限没问题,我都是用system用户登录操作的,为什么会这样?

3.
create table employees
(empno number(5),
ename varchar2(10),
deptno char(2) not null,
constraint emp_deptno_fk references dept
constraint emp_pk primary key(empno,ename)
)

总是提示我缺少右括号?怎样写两个constraint子句的建表语句?
...全文
111 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
Alkeen 2005-04-21
  • 打赏
  • 举报
回复
1 由于同样是外键,所以要先删除原来的外键,再新建。如:
ALTER TABLE table_name DROP CONSTRAINT fk_name; --drop CONSTRAINT set null
ALTER TABLE table_name ADD CONSTRAINT fk_name FOREIGN KEY(col_name) REFERENCES another_table (col_name) ON DELETE CASCADE;
2 是由于EMPLOYEES.DEPTNO除了有外键约束外,一定还有一个非空的约束。
如果可以并一定要set null,可以删除非空约束先
3 如楼上
baojianjun 2005-04-20
  • 打赏
  • 举报
回复
少逗号
weblogicfan 2005-04-20
  • 打赏
  • 举报
回复
怎么没有人回阿?

17,377

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 基础和管理
社区管理员
  • 基础和管理社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧