SQL 数据完整性与事务处理全解析
1. 数据完整性保护
SQL 语言提供了多种特性来保护关系型数据库中数据的完整性,具体如下:
-必需列的指定:在创建表时,可以指定必需列,数据库管理系统(DBMS)会阻止这些列中出现 NULL 值。
-数据验证:标准 SQL 中的数据验证仅限于数据类型检查,但许多 DBMS 产品提供了其他数据验证功能。
-实体完整性约束:确保主键能唯一标识数据库中表示的每个实体。
-引用完整性约束:确保在数据库进行更改(插入、更新和删除)时,实体之间的关系得以保留。
-引用完整性支持:SQL 标准和较新的实现提供了广泛的引用完整性支持,包括删除和更新规则,告知 DBMS 如何处理被其他行引用的行的删除和修改。
-业务规则的执行:DBMS 可以通过触发器机制执行业务规则,该机制由 Sybase 和 SQL Server 推广,并在 SQL:1999 标准中被纳入。触发器允许 DBMS 针对诸如 INSERT、DELETE 或 UPDATE 语句等事件采取复杂的操作。检查约束则提供了一种更有限的方式,将业务规则包含在数据库定义中,并让 DBMS 强制执行。
2. 事务处理概述
数据库更新通常由现实世界的事件触发,例如收到客户的新订单。收到新订单可能会引发对示例数据库的一系列四次更新:
- 向 ORDERS 表中添加新订单。
- 更新接