-
2021-05-06 03:47:11
正在看的ORACLE教程是:Oracle约束管理脚本。
作为一个Oracle数据库管理员,会碰到这样的数据库管理需求,停止或者打开当前用户(模式)下所有表的约束条件和触发器。这在数据库的合并以及对数据库系统的代码表中某些代码的修改时需要做的工作之一。 我们来看这样一种实际数据库工作业务需求,这在目前的许多应用中是非常实际的。某地区银行数据,目前采用市级数据集中,随着计算机网络技术的不断提高以及对服务水平的要求,提出了省级乃至国家级的数据集中。除了应用需要修改以外,对于数据库管理员来讲,最重要的工作就是对各地分散管理的数据库统一集中到一个或者几个集中数据库中。此时就需要整理以前各地各自为政的代码表为一个统一的代码表以及数据库的最后集中合并。 对Oracle数据库管理员来讲,这样的数据维护工作,在更新代码表中代码或者合并数据之前,首先要作的工作就是将系统中某用户下所有的外键或触发器停止,处理完数据后,再打开这些关闭的外键和触发器。针对这样的工作需求,本文给出了下面两个sql脚本:(1)系统中某模式或用户下外键或者触发器的管理脚本;(2)外键错误自动查找脚本。下面就来详细介绍这两个脚本。 一、约束管理脚本 该脚本可用来管理当前登录用户下的所有外键和触发器的打开和关闭,此处没有处理主键和唯一约束条件,该脚本稍加修改就可以处理主键和唯一约束条件,但这里建议最好不要在随意停止主键或唯一约束条件后,进行数据维护。 脚本运行方法如下(sql/PLUS):
其中,参数as_alter只能是“ENABLE”或者“DISABLE”,否则程序提示错误。当参数为“ENABLE”时,表示将当前模式下所有的外键和触发器打开,相反“DISABLE”就是将当前模式下所有的外键和触发器关闭。 附存储过程脚本:
判断输入参数是否为DISABLE或者是ENABLE,如果是的话,就继续处理,否则退出过程,给出提示
IF(UPPER(AS_ALTER)='DISABLE'ORUPPER(AS_ALTER)='ENABLE')THEN
OPENC_CON;
[NextPage] 当前用户下外键的处理ENABLE或者DISABLE
二、约束错误自动查找脚本 一般,数据库管理员在对数据进行维护时,如新数据的导入前,首先要关闭所有的外键和触发器,数据成功导入后,再打开导入前关闭的外键和触发器。这时经常会遇到错误号为ORA-02298的“未找到父项关键字”的错误。该错误的原因就是数据库表中出现了不能满足外键约束条件的记录。这里,另外给出了一个脚本(P_CON_ERR)用来自动查找造成这类错误的原因,也就是找出不满足外键约束条件的字段值。 该存储过程可单独运行,同时在前面介绍的存储过程P_ALTERCONS中也进行了调用,在存储过程P_ALTERCONS中,可以看到在打开外键时,如果出现错误号为ORA-02298的错误,就调用该存储过程,自动查找造成外键不能启动的原因。 下面是单独运行该存储过程的例子,在sql/PLUS环境下:
PL/sql过程已成功完成。 其中,FK_SB_HJJL_RELATION__SB_PZXH为出现错误的外键名称。 附存储过程脚本:
总结
以上是编程之家为你收集整理的Oracle约束管理脚本全部内容,希望文章能够帮你解决Oracle约束管理脚本所遇到的程序开发问题。
如果觉得编程之家网站内容还不错,欢迎将编程之家网站推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
更多相关内容 -
约束会自动创建索引吗,约束的validate和able
2021-05-03 05:09:47创建唯一性约束,自动创建了和约束名一样的唯一性索引创建check约束,不会产生索引创建外键约束,不会产生索引启用约束:enable( validate) :启用约束,创建索引,对已有及新加入的数据执行约束.enable novalidate :...创建唯一性约束,自动创建了和约束名一样的唯一性索引
创建check约束,不会产生索引
创建外键约束,不会产生索引
启用约束:
enable( validate) :启用约束,创建索引,对已有及新加入的数据执行约束.
enable novalidate :启用约束,创建索引,仅对新加入的数据强制执行约束,而不管表中的现有数据.
禁用约束:
disable( novalidate):关闭约束,删除索引,可以对约束列的数据进行修改等操作.
disable validate :关闭约束,删除索引,不能对表进行 插入/更新/删除等操作.
enable\validate用到的地方
1、物化视图要实现查询重写时,则必须保证相关联表的主外键约束的状态为enable、validate
2、要实现星型转换时,必须保证fact表即主表字段的外键约束的状态为enable、validate
SQL> alter table SALES disable novalidate constraint SALES_CHANNEL_FK;
Table altered.
SQL> select constraint_name,constraint_type,status,validated from user_constraints where table_name='SALES' and constraint_type='R' and CONSTRAINT_NAME='SALES_CHANNEL_FK';
CONSTRAINT_NAME CONSTRAINT_TYPE STATUS VALIDATED
-------------------- -------------------- ---------- --------------------
SALES_CHANNEL_FK R DISABLED NOT VALIDATED
SQL> alter table SALES disable validate constraint SALES_CHANNEL_FK;
Table altered.
SQL> select constraint_name,constraint_type,status,validated from user_constraints where table_name='SALES' and constraint_type='R' and CONSTRAINT_NAME='SALES_CHANNEL_FK';
CONSTRAINT_NAME CONSTRAINT_TYPE STATUS VALIDATED
-------------------- -------------------- ---------- --------------------
SALES_CHANNEL_FK R DISABLED VALIDATED
SQL> alter table SALES enable novalidate constraint SALES_CHANNEL_FK;
Table altered.
SQL> select constraint_name,constraint_type,status,validated from user_constraints where table_name='SALES' and constraint_type='R' and CONSTRAINT_NAME='SALES_CHANNEL_FK';
CONSTRAINT_NAME CONSTRAINT_TYPE STATUS VALIDATED
-------------------- -------------------- ---------- --------------------
SALES_CHANNEL_FK R ENABLED NOT VALIDATED
SQL> alter table SALES enable validate constraint SALES_CHANNEL_FK;
Table altered.
SQL> select constraint_name,constraint_type,status,validated from user_constraints where table_name='SALES' and constraint_type='R' and CONSTRAINT_NAME='SALES_CHANNEL_FK';
CONSTRAINT_NAME CONSTRAINT_TYPE STATUS VALIDATED
-------------------- -------------------- ---------- --------------------
SALES_CHANNEL_FK R ENABLED VALIDATED
-
IOS 自动约束
2015-08-15 16:23:57autolayout自动布局技术在iOS6就已经推出了,但是因为很多人一开始不习惯使用xib编程,而是坚持使用代码布局控件,所以autolayout并没有普及的太快。但是现在随着越来越多的人开始使用xib,怎样适配不同屏幕的尺寸和...原来的网址:http://my.oschina.net/leejan97/blog/279760
autolayout自动布局技术在iOS6就已经推出了,但是因为很多人一开始不习惯使用xib编程,而是坚持使用代码布局控件,所以autolayout并没有普及的太快。但是现在随着越来越多的人开始使用xib,怎样适配不同屏幕的尺寸和横竖屏,成了亟待解决的问题,好在两年前就已经推出并且日臻完善的xib autolayout技术可以完美的解决。
首先需要说下需求:需要登陆LoginViewController视图View上面的控件居中显示。
下面我就以一个简单的例子,来简要说明使用autolayout的小技巧,
(1)拖拉一个View到LoginViewController.xib的视图上面,调整高度为300,我下面都称其为MiddleView吧,如下图所示,
为了让图片垂直居中显示,我们可以通过键盘的上(↑)下(↓)按键移动View。
(2)拖两个UITextField和一个UIButton到View上面,同时设置了MiddleView的背景色为LightGray,如下图所示,
(3)给MiddleView添加约束,使其水平和竖直居中,先选中MiddleView,然后按照下图操作,
(4)给MiddleView添加宽高(width and height)的约束,上面仅仅添加水平和垂直居中,会有警告,这是因为添加的约束还不够,如下图所示,添加宽高的约束,
(5)给MiddleView上面的空间添加相互间的约束,这时候添加约束就简单多了,先选中MiddleView上面所有的控件,只要点击一个Add Missing Constraints,,如下图所示,
通过上面一些简单的操作,保证登陆界面中的控件不管在3.5寸还是4寸的屏幕上面,都能够居中显示了。运行效果如下所示,
3.5寸屏幕效果图,
4寸屏幕效果图,
总结:这里的autolayout只是简单的内容,我也只是抛砖引玉。更强大的autolayout还有待个人自己去理解。我想要说的是技术的出现总是不会在第一时间用在实践中,这就造成了技术出现了但是没有人用,而过了很长时间以后,才意识到新出现的技术是多么的重要。所以,我们要乐于去拥抱新出现的技术,哪怕现在使用不上,但是慢慢地学习,总有一天会有所用处。这是我对xib和autolayout技术的普及速度的一些理解,现在还有很多人在使用代码编写控件,他们已经不再愿意相信xib和arc的好处,实际上这不利于自己的进步。我感觉现在使用xib和autolayout,让编程不再那么枯燥无味,我们通过拖拖拉拉,调整大小,感觉自己真的像一个设计师一样。
还有,现在苹果iOS8新推出了许多特性,开放了很多的开发者权限,想想就是让人激动,所以赶快学习起来吧。另外苹果的swift语言,我们也要好好学习,因为它真的可能取代OC。那么多Java、.Net开发者之前想转向iOS开发,但是限于设备和语言的鸿沟,他们一直没有机会转型,现在苹果的swift提供的便利,给了很多新手和Web开发老手机会转型,他们都在虎视眈眈,那么作为纯粹的iOS开发者,你赶快行动起来吧。早点学好swift,早点受益。
-
MySQL关闭外键约束 && 设置编号自增 && 触发器 - - Navicat Premium 12
2020-11-20 18:59:00关闭外键约束 在数据库定义中,不可避免要在一个表中引用另一个表的主键,因此外键就此出现。那么当我们需要根据外键删除一个或多个元组时,因为外键约束,我们无法完成删除操作! SET FOREIGN_KEY_CHECKS=0;(1表示...关闭外键约束
在数据库定义中,不可避免要在一个表中引用另一个表的主键,因此外键就此出现。那么当我们需要根据外键删除一个或多个元组时,因为外键约束,我们无法完成删除操作!
SET FOREIGN_KEY_CHECKS=0;(1表示开,0表示关)
当关闭外键约束后,我们就可以顺利进行 delect 操作了哦!!
敲重点,实战来袭(上次触发器博客 up 版)
创建员工employee表、部门变动历史dept_history表,工资变动历史sal_history表
- 创建emp库
CREATE DATABASE emp DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
- 创建employee表
use emp; CREATE TABLE employee ( empid VARCHAR(5) PRIMARY KEY, -- 员工编号 empname VARCHAR(10), -- 员工姓名 dept VARCHAR(15), -- 所在部门 salary INT -- 工资 );
- 创建dept_history表
CREATE TABLE dept_history ( dhid INT auto_increment PRIMARY KEY, -- 部门变动编号(自动增长,无需赋值) empid VARCHAR(5), -- 员工编号 olddept VARCHAR(15), -- 调动前的部门(新入职的员工old值记为NULL) newdept VARCHAR(15), -- 调动后的部门 uptime DATETIME, -- 修改时间 FOREIGN KEY (empid) REFERENCES employee(empid) );
- 创建sal_history表
CREATE TABLE sal_history ( shid INT auto_increment PRIMARY KEY, -- 工资变动编号(自动增长,无需赋值) empid VARCHAR(5), -- 员工编号 oldsal INT, -- 变动前的工资 newsal INT, -- 变动后的工资 uptime DATETIME, -- 修改时间 FOREIGN KEY (empid) REFERENCES employee(empid) );
任务一:
当新职工入职时,员工信息表将插入1条数据。同时,触发器在部门变动历史中增加1条记录,其中olddept值为null;在工资变动历史中增加1条记录,其中oldsal值为0
- 创建insert触发器
DELIMITER $ CREATE TRIGGER emp_insert AFTER INSERT ON employee FOR EACH ROW BEGIN INSERT INTO dept_history(empid,olddept,newdept,uptime) VALUES(new.empid,null,new.dept,now()); INSERT INTO sal_history(empid,oldsal,newsal,uptime) VALUES(new.empid,0,new.salary,now()); END$ DELIMITER ;
- 插入数据
INSERT INTO employee VALUES('101','李华','策划部',6000); INSERT INTO employee VALUES('102','王梅','信息部',8000); INSERT INTO employee VALUES('103','王刚','信息部',9000); INSERT INTO employee VALUES('104','梅芳','宣传部',4000);
- 验证结果
employee表
dept_history表
sal_history表
任务二:
当员工离职时,员工信息表将删除1条数据。同时,触发器在工资变动历史中增加1条记录,其中newsal值为0;在部门变动历史中增加1条记录,其中newdept值为null
- 创建delect触发器
DELIMITER $ CREATE TRIGGER emp_delete AFTER DELETE ON employee FOR EACH ROW BEGIN INSERT INTO dept_history(empid,olddept,newdept,uptime) VALUES(old.empid,old.dept,null,now()); INSERT INTO sal_history(empid,oldsal,newsal,uptime) VALUES(old.empid,old.salary,0,now()); END$ DELIMITER ;
- 删除数据
SET FOREIGN_KEY_CHECKS=0; -- 关闭外键约束 DELETE FROM employee WHERE empid='101'; SET FOREIGN_KEY_CHECKS=1; -- 打开外键约束
- 验证结果
employee表
dept_history表
sal_history表
任务三:
当新职工部门或工资发生变化时,触发器执行以下操作。若部门发生变动,则在变动历史中增加1条记录;若工资发生变动,则在工资变动历史中增加1条记录
- 创建update触发器
DELIMITER $ CREATE TRIGGER emp_update AFTER UPDATE ON employee FOR EACH ROW BEGIN IF(old.dept!=new.dept) THEN INSERT INTO dept_history(empid,olddept,newdept,uptime) VALUES(new.empid,old.dept,new.dept,now()); END IF; IF(old.salary!=new.salary) THEN INSERT INTO sal_history(empid,oldsal,newsal,uptime) VALUES(new.empid,old.salary,new.salary,now()); END IF; END$ DELIMITER ;
- 更新数据
UPDATE employee SET dept='技术部' WHERE empid='102'; UPDATE employee SET salary=6000 WHERE empid='104';
- 验证结果
employee表
dept_history表
sal_history表
-
【MySQL8.0学习笔记】约束:主键约束、自增长约束、非空约束、唯一性约束、默认约束与零填充约束
2022-03-28 19:09:55本文对MySQL数据库的约束相关知识进行了归纳总结,包括主键约束、自增长约束、非空约束、唯一性约束、默认约束与零填充约束。 -
MySQL删除表的时候忽略外键约束的简单实现
2020-12-16 14:16:18当然很多自动化工具也可以做这样的事情。 删除表的时候有时会遇到这样的错误消息: ERROR 1217 (23000): Cannot delete or update a parent row: a foreign key constraint fails 这是因为你尝试删除的表中的字段... -
solidworks基础--约束的建立与撤销
2020-08-14 16:53:36SolidWorks与其他CAD软件最大的不同特点之一就是约束。每一个实体都必须有严格的约束。...系统会按照系统设置的捕捉或者绘制的原始图形的几何特点自动增加约束,比如矩形的边与边之间就会自动增加垂直水平的约束, -
Revit中的默认约束问题
2020-12-09 20:46:45用一个桥墩来做个例子如何设置约束?桥墩往下走 柱子 桥台 桩基础 再结合 https://bbs.co188.com/thread-10021186-1-1.html 以及今晚亢师兄遇到的问题 谈一谈他的自动约束 以及如何解决(加强约束) -
mysql怎么去除主键约束
2021-01-18 22:47:101 WAL归档# 在自动的WAL检查点之间的日志文件段的最大数量checkpoint_segments = # 在自动WAL检 2021-01-16 12:21:49 一、验证postgresql增量合并的方案结果:没有有效可行的增量合并方案,暂时放弃二、梳理... -
关于sql:如何暂时禁用MySQL中的外键约束?
2021-03-14 02:37:50是否有可能暂时禁用MySQL中的约束?我有两个Django模型,每个模型都有一个ForeignKey到另一个。 由于ForeignKey约束,删除模型的实例会返回错误:cursor.execute("DELETE FROM myapp_item WHERE n = %s", n)... -
mysql启动和关闭外键约束的方法(FOREIGN_KEY_CHECKS)
2021-01-27 17:36:34[在MySQL 3.23.44版本后,InnoDB引擎类型的表支持了外键约束。外键的使用条件:1.两个表必须是InnoDB表,MyISAM表暂时不支持外键(据说以后的版本有可能支持,但至少目前不在MySQL中删除一张表或一条数据的时候,出现... -
主键约束自动建立索引问题及约束状态分析
2017-02-13 20:18:35约束用于确保数据库数据的完整性,在oracle 数据库中,可以使用约束,触发器和应用代码(过程,函数)3种方法实现数据完整性,这3种方法中,因为约束易于维护,并且具有最好的性能,所以实现数据完整性首选约束. ... -
mysql主键非空约束怎么设置?
2021-02-02 07:23:20mysql中可以通过在“CREATE TABLE”语句中,使用“ PRIMARY KEY [默认值]”语句来设置主键约束,使用“ NOT NULL”语句来设置非空约束。mysql主键约束主键(PRIMARY KEY)的完整称呼是“主键约束”,是 MySQL 中使用... -
oracle 禁用外键约束
2021-05-07 08:30:391、ORACLE数据库中的外键约束名都在表user_constraints中可以查到。其中constraint_type='R'表示是外键约束。2、启用外键约束的命令为:alter table table_name enable constraint constraint_name3、禁用外键约束的... -
Oracle约束
2021-05-01 02:49:281.约束作用:约束用于确保数据库数据的完整性,在oracle数据库中,可以使用约束,触发器和应用代码(过程,函数)3种方法实现数据完整性,这3种方法中,因为约束易于维护,并且具有最好的性能,所以实现数据完整性首选约束.... -
主键约束自动建立索引问题
2013-06-17 16:32:49约束用于确保数据库数据的完整性,在oracle数据库中,可以使用约束,触发器和应用代码(过程,函数)3种方法实现数据完整性,这3种方法中,因为约束易于维护,并且具有最好的性能,所以实现数据完整性首选约束. 一.... -
SQL Server 2012 唯一约束(定义唯一约束、删除唯一约束)
2019-04-21 21:05:45文章目录准备知识定义唯一约束使用SSMS工具定义唯一约束使用SQL方式定义唯一约束方式一:在创建数据表的时候定义唯一约束方式二:修改数据表定义唯一约束删除唯一约束使用SSMS工具删除唯一约束方式一:在对象资源... -
MySQL导入数据库--开启/关闭外键约束
2018-01-29 10:56:00今天从服务器上面以SQL文件导出数据库时,发现导入失败,提示insert 语句... mysql启动和关闭外键约束的方法(FOREIGN_KEY_CHECKS) 禁用外键约束: SET FOREIGN_KEY_CHECKS=0; 启用外键约束: ... -
MySQL外键约束,级联删除
2020-12-24 09:56:03我建议使用INSERT...ON DUPLICATE ...这些情况包括:在具有PRIMARY KEY或UNIQUE约束的列中插入重复的键。 将NULL插入具有NOT NULL约束的列中。 在分区表中插入一行,但是您插入的值不会映射到分区。 如果使用REPLACE... -
Oracle约束介绍
2021-05-06 03:56:15Oracle数据库约束分为以下几种:1:not null和check约束2.PK主键约束3.Unique唯一值约束4.FK外键约束下面介绍了以上4种约束的创建,添加,删除方法:1.check约束当创建约束时,系统会自动给约束取名,也可用户自己取名>... -
SQL数据库约束、默认和规则
2021-01-21 18:16:48数据的完整性实体完整性又称为行完整性,即数据库中的所有行都具有一个非空且没有重复的主键值MSSQL中通过唯一索引、PRIMARY KEY约束、UNIQUE约束、INDENTITY属性等来强制主键的唯一性域完整性又叫列完整性,以保证... -
福特自动驾驶汽车类应用技术专利资料270个合集(英文).zip
2021-09-07 14:33:11102对流加热辅助发动机关闭自然真空测试.pdf 103控制车辆主动悬架系统的方法.pdf 104使用听觉数据避免碰撞.pdf 105用于主动发动机安装诊断的系统和方法.pdf 106自主置信度控制.pdf 107增强碰撞避免.pdf 108用于车辆... -
约束和约束关系
2019-10-07 08:08:12阅读目录 一 介绍 二 not null与default ... 约束条件与数据类型的宽度一样,都是可选参数 作用:用于保证数据的完整性和一致性 主要分为: PRIMARY KEY (PK) 标识该字段为该表的主键,可以唯一... -
System Verilog 约束技巧
2021-07-23 22:51:46文章目录System Verilog的约束与随机约束 System Verilog的约束与随机 约束 简单表达式:一个表达式中最多只能使用一个关系操作符,约束块里只能包含表达式,所以在约束块里不能进行赋值。 权重分布:dist src ... -
iOS 8 Auto Layout界面自动布局约束
2016-08-25 10:06:42添加自动布局约束(下文简称约束)有以下三种方式: 使用Xcode的Interface Builder界面设计器添加并设置约束通过代码逐条添加约束通过可视化格式语言VFL添加约束 本文将以一个简单的例子来演示如何使用这几种方式... -
SQLServer之修改UNIQUE约束
2021-01-27 02:56:12使用SSMS数据库管理工具修改UNIQUE约束1、连接数据库,选择数据表-》右键点击-》选择设计(或者展开键,选择要修改的键,右键点击,选择修改,后面步骤相同)。2、选择要修改的数据列-》右键点击-》选择索引/键。3、在...