欢迎进入Oracle社区论坛,与200万技术人员互动交流 >>进入 标准规定,约束可以是deferrable或not deferrable(默认)。 not deferrable 约束在每一个DML语句后检查; deferrable 约束可以在每一个insert,delete,或update(即时模式)后立即检查,或者在事
欢迎进入Oracle社区论坛,与200万技术人员互动交流 >>进入
标准规定,约束可以是deferrable或not deferrable(默认)。
not deferrable 约束在每一个DML语句后检查;
deferrable 约束可以在每一个insert,delete,或update(即时模式)后立即检查,或者在事务末尾检查(延迟模式)
当没有按特定顺序执行数据加载时,这项功能特别有用――它允许先把数据载入子表,然后再装入父表。
另一种用法是在加载不符合某个check约束的数据之后,对其进行适当的更新。
语法如下:
[ [not] deferrable [initially {immediate | deferred} ] ]
或
[ [initially {immediate | deferred} ] [not] deferrable ]
1 deferrable介绍
1.1 deferrable的两个选项区别
deferrable表示该约束是可延迟验证的。 它有两个选项:
Initially immediate(默认): 立即验证, 执行完一个sql后就进行验证;
Initially deferred: 延迟验证, 当事务提交时或调用set constraint[s] immediate语句时才验证。
区别是: 事务提交时验证不通过, 则立即回滚事务; set constraint[s] immediate时只验证, 不回滚事务。
1.2 not deferrable与deferrable区别
区别就在于: “立即验证的可延迟约束” 是可以根据需要设置成 “延迟验证的可延迟约束”的, 而“不可延迟验证”是不能改变的。
2 deferrable实例
2.1 建表
create table test1(a number(1) constraint check_a check(a > 0) deferrable
initially immediate,
b number(1) constraint check_b check(b > 0) deferrable
initially deferred);
2.2 正常插入,没问题
SQL> insert into test1 values(1, 1);
1 row inserted
2.3 检验立即验证:数据不能插入
SQL> insert into test1 values(-1, 1);
insert into test1 values(-1, 1)
ORA-02290: 违反检查约束条件 (MYHR.CHECK_A)
2.4 检验延迟验证:可以执行
SQL> insert into test1 values(1, -1);
1 row inserted
SQL> select * from test1;
A B
-- --
1 1
1 -1
2.5 提交延迟验证(commit):验证失败,自动回滚
SQL> commit;
commit
ORA-02091: 事务处理已回退
ORA-02290: 违反检查约束条件 (MYHR.CHECK_B)
2.6 提交延迟验证(set constraint immediate):验证失败,不回滚
SQL> insert into test1 values(1, -1);
1 row inserted
SQL> set constraint check_b immediate;
set constraint check_b immediate
ORA-02290: 违反检查约束条件 (MYHR.CHECK_B)
或者将所有的约束做修改: alter session set constraints = immediate;
或者:set constraints all immediate;
2.7 将延迟验证设置为立即验证:则在插入时出错
SQL> set constraint check_b immediate;
Constraints set
SQL> insert into test1 values(1,-1);
insert into test1 values(1,-1)
ORA-02290: 违反检查约束条件 (MYHR.CHECK_B)
[1] [2]

如何有效监控MySQL性能?使用mysqladmin、SHOWGLOBALSTATUS、PerconaMonitoringandManagement(PMM)和MySQLEnterpriseMonitor等工具。1.使用mysqladmin查看连接数。2.用SHOWGLOBALSTATUS查看查询数。3.PMM提供详细性能数据和图形化界面。4.MySQLEnterpriseMonitor提供丰富的监控功能和报警机制。

MySQL和SQLServer的区别在于:1)MySQL是开源的,适用于Web和嵌入式系统,2)SQLServer是微软的商业产品,适用于企业级应用。两者在存储引擎、性能优化和应用场景上有显着差异,选择时需考虑项目规模和未来扩展性。

在需要高可用性、高级安全性和良好集成性的企业级应用场景下,应选择SQLServer而不是MySQL。1)SQLServer提供企业级功能,如高可用性和高级安全性。2)它与微软生态系统如VisualStudio和PowerBI紧密集成。3)SQLServer在性能优化方面表现出色,支持内存优化表和列存储索引。

mySqlManagesCharacterSetsetSandCollationsyutusututf-8asthEdeFault,允许ConfigurationAtdataBase,table和columnlevels,AndrequiringCarefullageLignmentToavoidMismatches.1)setDefeaultCharactersetTercharactersetEtCollacterSeteTandColletationForAdataBase.2)conformentcollecharactersettersetertersetcollatertersetcollationcollation

MySQL触发器是与表相关联的自动执行的存储过程,用于在特定数据操作时执行一系列操作。1)触发器定义与作用:用于数据校验、日志记录等。2)工作原理:分为BEFORE和AFTER,支持行级触发。3)使用示例:可用于记录薪资变更或更新库存。4)调试技巧:使用SHOWTRIGGERS和SHOWCREATETRIGGER命令。5)性能优化:避免复杂操作,使用索引,管理事务。

在MySQL中创建和管理用户账户的步骤如下:1.创建用户:使用CREATEUSER'newuser'@'localhost'IDENTIFIEDBY'password';2.分配权限:使用GRANTSELECT,INSERT,UPDATEONmydatabase.TO'newuser'@'localhost';3.修正权限错误:使用REVOKEALLPRIVILEGESONmydatabase.FROM'newuser'@'localhost';然后重新分配权限;4.优化权限:使用SHOWGRA

MySQL适合快速开发和中小型应用,Oracle适合大型企业和高可用性需求。1)MySQL开源、易用,适用于Web应用和中小型企业。2)Oracle功能强大,适合大型企业和政府机构。3)MySQL支持多种存储引擎,Oracle提供丰富的企业级功能。

MySQL相比其他关系型数据库的劣势包括:1.性能问题:在处理大规模数据时可能遇到瓶颈,PostgreSQL在复杂查询和大数据处理上表现更优。2.扩展性:水平扩展能力不如GoogleSpanner和AmazonAurora。3.功能限制:在高级功能上不如PostgreSQL和Oracle,某些功能需要更多自定义代码和维护。


热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

Video Face Swap
使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热门文章

热工具

MinGW - 适用于 Windows 的极简 GNU
这个项目正在迁移到osdn.net/projects/mingw的过程中,你可以继续在那里关注我们。MinGW:GNU编译器集合(GCC)的本地Windows移植版本,可自由分发的导入库和用于构建本地Windows应用程序的头文件;包括对MSVC运行时的扩展,以支持C99功能。MinGW的所有软件都可以在64位Windows平台上运行。

VSCode Windows 64位 下载
微软推出的免费、功能强大的一款IDE编辑器

安全考试浏览器
Safe Exam Browser是一个安全的浏览器环境,用于安全地进行在线考试。该软件将任何计算机变成一个安全的工作站。它控制对任何实用工具的访问,并防止学生使用未经授权的资源。

禅工作室 13.0.1
功能强大的PHP集成开发环境

SublimeText3 英文版
推荐:为Win版本,支持代码提示!