标准规定,约束可以是deferrable或not deferrable(默认)。
not deferrable 约束在每一个DML语句后检查;
deferrable 约束可以在每一个insert,delete,或update(即时模式)后立即检查,或者在事务末尾检查(延迟模式)
当没有按特定顺序执行数据加载时,这项功能特别有用——它允许先把数据载入子表,然后再装入父表。
另一种用法是在加载不符合某个check约束的数据之后,对其进行适当的更新。
语法如下:
[ [not] deferrable [initially {immediate | deferred} ] ]
或
[ [initially {immediate | deferred} ] [not] deferrable ]
参考例子:
CREATE TABLE salesman
(
salesman_id_n NUMBER NOT NULL,
salesman_code_s VARCHAR2(2) NOT NULL,
salesman_name_s VARCHAR2(50) NOT NULL,
salesman_status_s CHAR(1) DEFAULT 'Y',
CONSTRAINT chk_salesstatus CHECK (salesman_status_s in ('N', 'Y'))
DEFERRABLE INITIALLY DEFERRED,
CONSTRAINT pk_salesmanprim PRIMARY KEY (salesman_id_n)
);
CREATE TABLE address
(
addr_id_n NUMBER CONSTRAINT pk_addrprimary PRIMARY KEY,
addr_custid_fn NUMBER,
addr_salesmanid_fn NUMBER CONSTRAINT fk_addr_salesman
REFERENCES salesman (salesman_id_n)
ON DELETE CASCADE,
addr_address_s VARCHAR2(60),
addr_type_s VARCHAR2(8) CONSTRAINT chk_addr_type CHECK
(addr_type_s IN ('BILLING', 'SHIPPING')),
addr_city_s VARCHAR2(18) CONSTRAINT nn_addr_city NOT NULL,
addr_state_s CHAR(2),
addr_zip_s VARCHAR2(10) NOT NULL,
addr_country_s CHAR(3)
);
INSERT INTO salesman
(
salesman_id_n,
salesman_code_s,
salesman_name_s,
salesman_status_s
)
VALUES
(23,'02','FAIRFIELD BUGS ASSOCIATION','A');
UPDATE salesman
SET salesman_status_s = 'Y'
WHERE salesman_status_s = 'A';
COMMIT;
分享到:
相关推荐
除了上述基本约束,Oracle还支持**延迟约束检查**,允许在事务提交后检查约束,这对于提高并发处理性能特别有用,但需谨慎使用,以避免数据完整性问题。 #### 创建与管理约束 - **增加约束**:使用`ALTER TABLE ...
- **延迟约束:** 可以设置某些约束在提交事务时才检查,提高插入性能。 通过以上内容,我们可以更深入地理解Oracle数据库中约束的种类、作用以及创建方式。这对于维护数据库的完整性和安全性至关重要。
Oracle允许在创建约束后延迟验证,这意味着在插入或更新数据时不会立即检查约束,而是在需要时进行验证。 在实际的Java开发中,通过JDBC(Java Database Connectivity)API与Oracle数据库交互时,了解并正确使用...
"Golden"可能是指Oracle GoldenGate,这是一个数据复制和集成工具,用于实现实时的数据同步和低延迟的数据迁移。在Oracle数据库操作中,GoldenGate常用于企业级的数据整合、灾难恢复和跨数据中心的数据同步。 ...
我们创建了 Class 和 Student 两个表,为 Student 表添加一个可延迟的外键约束,为 student 表的 sex 列添加一个检查约束,在 class 表的 CNAME 列上创建一个唯一性索引,创建一个索引化表,创建一个 Student_range ...
非延迟约束条件** - **定义**:在执行每个DML语句之后立即进行检查。 - **特点**:如果违反约束条件,则自动回滚相关的DML操作。 **2. 延迟约束条件** - **定义**:在事务处理结束时进行检查。 - **特点**:...
Oracle TimesTen In-Memory Database是一款高性能的内存数据库系统,专为实时应用程序设计,旨在提供极低延迟的数据访问。它通过将数据存储在内存中来实现高速性能,这与传统的基于磁盘的数据库不同。此特性使得...
#### 延迟约束检查 允许在数据复制完成后进行约束检查,提高数据复制的效率和成功率。 #### 限制无主键表的行更改 对于没有主键的表,限制行更改,以减少数据不一致性的风险。 #### 复制带时区的TIMESTAMP 配置...
在 Simple 方式下,ODI 从数据库中抽取增量数据,但如果表之间有主外键约束关系,采用 Simple 方式就会出现问题。Consistent 方式是专门解决这个问题的,它在处理父表前首先锁定主表和子表需要复制的记录,在增量...
13 维护数据的完整性 目标 13-2 数据的完整性 13-3 约束的类型 13-4 约束的状态 13-5 约束的检测 13-7 定义即时约束或延迟约束 13-8 强制主键和唯一键 13-9 外部关键字的考虑 13-10 在建表时定义完整性约束 13-11 ...
启用并验证的约束在DML语句执行时立即检查,而延迟约束则在提交事务时检查。违反约束条件会导致操作失败,并可能产生错误信息。 最后,数据字典是Oracle提供的一种系统表和视图的集合,用于查询关于数据库、用户、...
但物化视图主要适用于只读环境,不适用于频繁更新的 OLTP 系统,更新可能导致行锁影响并发性,且维护和刷新可能会有延迟,对磁盘空间需求较高,受制于主键和外键约束。 3. Streams 数据同步: Streams 技术利用 ...
- **启用/禁用约束**:使用`ALTER TABLE`语句可以立即(IMMEDIATE)或延迟(DEFERRED)启用或禁用约束。立即模式在DML操作时立即检查约束,而延迟模式则在提交事务时检查。 - **验证约束**:`NOVALIDATE`选项仅启用...
4. 非延迟约束:非延迟约束是在数据插入或更新时立即检查的约束,如果违反约束,操作将失败。 5. 对象权限:对象权限是授予用户对特定数据库对象(如表、视图等)的操作权限,如SELECT、INSERT、UPDATE和DELETE。 ...
Oracle 优化理论主要关注如何最大限度地提升数据库服务器的性能,以确保高效的数据处理和系统响应。以下是一些关键的知识点: ...通过这些优化方法,可以提高数据库处理速度,降低延迟,提升用户体验。
通过Perl脚本,我们可以编写出灵活且可定制的巡检程序,对Oracle数据库进行深度检查。 Oracle数据库巡检通常包括以下几个关键方面: 1. **性能监控**:检查数据库的性能指标,如CPU使用率、内存使用、I/O延迟等,...