oracle约束怎么修改 oracle修改约束名
小议Oracle外键约束修改行为(一)
Oracle的外键用来限制子表中参考的字段的值 必须在主表中存在 而且在主表的记录发生变化导致外键参考唯一约束值发生了变化时 定义了一系列的动作
创新互联公司专注为客户提供全方位的互联网综合服务,包含不限于成都网站制作、网站建设、涞水网络推广、小程序开发、涞水网络营销、涞水企业策划、涞水品牌公关、搜索引擎seo、人物专访、企业宣传片、企业代运营等,从售前售中售后,我们都将竭诚为您服务,您的肯定,是我们最大的嘉奖;创新互联公司为所有大学生创业者提供涞水建站搭建服务,24小时服务热线:18980820575,官方网址:www.cdcxhl.com
在SQL 标准中定义了几种外键改变后 如何处理子表记录的动作 其中包括
限制Restrict 这种方式不允许对被参考的记录的键值执行更新或删除的操作 置为空Set to null 当参考的数据被更新或者删除 那么所有参考它的外键值被置为空
置为默认值Set to default 当参考的数据被更新或者删除 那么所有参考它的外键值被置为一个默认值
级联Cascade 当参考的数据被更新 则参考它的值同样被更新 当参考的数据被删除 则参考它的子表记录也被删除
不做操作No action 这种方式不允许更新或删除被参考的数据 和限制方式的区别在于 这种方式的检查发生在语句执行之后 Oracle默认才会的方式就是这种方式
Oracle明确支持的方式包括No action Set to null和Cascade 对于Set to Default和Restrict Oracle的约束类型并不直接支持 不过可以通过触发器来实现
简单看一下Oracle的默认处理方式No action
SQL CREATE TABLE T_P (ID NUMBER NAME VARCHAR ( ));
表已创建
SQL ALTER TABLE T_P ADD PRIMARY KEY (ID);
表已更改
SQL CREATE TABLE T_C (ID NUMBER FID NUMBER NAME VARCHAR ( ));
表已创建
SQL ALTER TABLE T_C ADD CONSTRAINT FK_T_C FOREIGN KEY (FID) REFERENCES T_P (ID);
表已更改
SQL INSERT INTO T_P VALUES ( A );
已创建 行
SQL INSERT INTO T_P VALUES ( B );
已创建 行
SQL INSERT INTO T_C VALUES ( A );
已创建 行
SQL MIT;
提交完成
对于No Action操作而言 如果主键的记录被外键所参考 那么主键记录是无法更新或删除的
SQL DELETE T_P WHERE ID = ;DELETE T_P WHERE ID = *第 行出现错误:ORA : 违反完整约束条件 (YANGTK FK_T_C) 已找到子记录日志
SQL UPDATE T_P SET ID = WHERE ID = ;UPDATE T_P SET ID = WHERE ID = *第 行出现错误:ORA : 违反完整约束条件 (YANGTK FK_T_C) 已找到子记录日志
SQL DELETE T_P WHERE ID = ;
已删除 行
不过No Action又和Restrict操作有所区别 No Action允许用户执行语句 在语句执行之后 或者事务结束的时候才会检查是否违反约束 而Restrict只有检测到有外键参考主表的记录 就不允许删除和更新的操作执行了
这也使得No Action操作支持延迟约束
SQL ALTER TABLE T_C DROP CONSTRAINT FK_T_C;
表已更改
SQL ALTER TABLE T_C ADD CONSTRAINT FK_T_C FOREIGN KEY (FID) REFERENCES T_P (ID) DEFERRABLE INITIALLY DEFERRED;
表已更改
SQL SELECT * FROM T_P;
ID NAME A
SQL SELECT * FROM T_C;
ID FID NAME A
SQL DELETE T_P WHERE ID = ;
已删除 行
SQL INSERT INTO T_P VALUES ( A );
已创建 行
SQL MIT;
提交完成
lishixinzhi/Article/program/Oracle/201311/17487
创建主键约束后如果输入相同的数据会产生什么样的提示如何进行修改
会提示违反主键约束不能插入的错误,解决主键重复问题即可。
解决的方法两种方法:一是处理掉重复的数据。二是修改约束条件如果是oracle的import命令,可以设定参数,采用忽略错误导入的方式导入,或者无条件覆盖原数据。把以前的数据清空再导入。
Oracle之约束
约束用于限制加入表数据的类型,目的是保证数据的一致性和完整性
创建格式:在创建表时规定约束(在Create添加),也可以在创建之后添加(Alter table)。
约束类型:NOT NULL、UNIQUE、PRIMARY KEY、FOREIGN KEY、CHECK、DEFAULT。
非空约束就是限制必须为某个列提供值,不允许有空值的存在。
空值(NULL)是不存在的值,它既不是数字0也不是空字符串,而是不存在未知的情况,即:该列的所有值不能为空,但可以为空字符或者0。
结果:通过desc查看会发现Nullable那一列的Y消失,表示此列不能为空。且在插入数值的时候此列必须添加数值,否则会报错。
取消非空约束使用alter方法:alter table test1 modify Author null; 设置test1的Author可以
唯一性约束强调所在的列不允许有相同的值,但可以有多个Null。
其定义比主键约束弱,即他的列允许有空值(主键不允许有空值),唯一性约束的主要作用是保证在除主键外,其他列值得唯一性。
即:直接在列后面添加unique,
或在列后面添加 constraint 约束名 unique,
或在最后添加constraint 约束 unique(列名),
或者alter table 表名 add constraint 约束名 unique(列名);
建议使用的方法为alter和在最后添加最后添加constraint 约束 unique(列名)。
注:添加约束名的好处为:便于删除操作,在删除时需要通过约束名来完成操作。同时如果不添加约束名则系统会自动生成约束名,在表移动等操作时,约束名也会更改,会造成后期操作的麻烦。
取消唯一性约束:alter table test3 drop constraint QQ_UK2;
主键约束唯一地标识了每一行记录(非空+唯一),在一个表中,最多只能有一个主键约束,主键约束既可以由一个列组成,也可以由两个或两个以上列组成(这种称联合主键)。
具体的方法和添加唯一约束相同,建议使用的方法为alter和在最后添加最后添加constraint 约束 unique(列名)。
删除主键:alter table 表名 drop constraint 约束名
外键约束主要是在B表中的某一列受到A表的制约,B的那一列的值只能是A内的值,比如工资表的员工号必须受员工表的员工号限制一样,工资表不能有不存在的员工号。
一般外键约束会使用两个表进行关联,外键是指"当前表"引用"另一个表"的某一列或某几列。在另一个表中,被引用的列必须具有主键约束或者唯一性约束,不存在的数据不能出现在当前表的对应列中。一般情况下当删除被引用表中数据时,该数据也不能出现在外键列中,如果存在则删除失败。
删除外键约束:alter table test5_1 drop constraint FK_test_5_1;
check约束是为了让表中某字段值只能输入固定的值。
check设置数值范围:constraint check 表名 check (列名 between 小范围 and 大范围);
设置为大写:constraint check 表名 check (列名 = upper(列名));
取消 alter table test6_2 drop constraint check_test_6_2;
默认约束是设置列的默认值,即当插入一行时,若不给出该列的值,就用默认值代替。
结果:在添加数据的时候,如果在设置有默认值的列没有添加数据则会把默认值添加进去。
取消默认约束 alter table test2 modify BOOKNAME default null;
注:
add用于修改字段类型和长度的(即修改字段的属性)
modify修改表的数据结构。
update是修改数据内容的。
drop是删除数据内容。
oracle 添加、修改、删除、约束-语法
创建表结构:
向表中添加主键约束
向表中添加Sequences
添加字段的语法:
修改字段的语法:
删除字段的语法:
添加、修改、删除多列的话,用逗号隔开。
Oracle如何添加主键约束
工具/材料
SQL Developer
01
首先打开SQL Developer软件,找一个没有主键约束的表,如下图所示
02
然后我们新建一个查询,在界面中输入如下的约束修改语句,如下图所示,主要通过add constranint来添加约束
03
编写完约束添加语句以后,点击工具栏中的执行按钮,如下图所示,如果输出栏显示已变更则证明主键约束创建成果
04
然后我们进入STUDENT表的约束添加页中可以看到,我们加的主键约束已经添加进去了,如下图所示
05
另外,创建表的时候可以直接添加主键约束,如下图所示,直接在表创建语句中添加constraint即可
06
表创建完以后,记得在左侧刷新数据库信息,如下图所示,因为你创建的信息不刷新的话不会更新
07
最后打开你所创建的表,看到你添加的主键约束已经加入进来了,这种方式的效果alter的方式是一样的
网页名称:oracle约束怎么修改 oracle修改约束名
标题链接:http://myzitong.com/article/hhodps.html