用户定义的数据规范、并发性思量要素等等
复合 SQL
何时利用复合 SQL
SQL 语句平常要逐句实验。这使得编程更加等闲,但是也意味着必需在客户机和服务器之间传送每个语句和每个效果集。为了添加利用按次所天生的收集流量,可以将多个 SQL 语句编为一个组。这个组则称作复合 SQL(compound SQL)。复合 SQL 平常用在服务器端东西中,比如存储进程和用户定义的函数,也用在嵌入式 SQL 利用按次中。
有两种规范的复合 SQL:原子的(atomic)和非原子的(non-atomic)。
拼集原子的 SQL,当一切子语句告成完成时,大要当某个子语句失败时,利用按次会从数据库经管器采取一个响应。要是一个子语句失败,那么会将整个组视作失败,该组中对数据库所做的任何变动都被回滚。
拼集非原子的 SQL,当一切子语句完成时,利用按次会从数据库经管器采取一个响应。无论前一子语句能否告成完成,组中的每个子语句城市实验。只需在回滚收罗非原子复合 SQL 的事情单元时,才可以回滚该语句组。
回页首
复合 SQL:利益和缺陷
利用复合 SQL 有一些利益:
- 可以添加收集流量,由于只会传送最初的 SQL 块和最终的效果集。
- 可以进步利用按次的小我私家速度,由于更多事情是在服务器而不是客户机上实验的。
但是,利用复合 SQL 也有一些缺陷:
- 只能从实验的整个 SQL 语句组采取一条错误旧事。
- 要是发作错误,就无法断定是哪个 SQL 语句失败了。
图 3 是一个利用复合 SQL 形成收集流量下降的示例。更多的线表现更大的收集流量。收集流量的下降完全寄托复合 SQL 中 SELECT
、INSERT
、UPDATE
和 DELETE
语句的平衡。
图 3. 收集流量:用和不用复合 SQL
在下列几种环境下,提议利用复合 SQL:
- 将在 SQL 语句块中来回发送少量数据。利用复合 SQL 可以添加收集流量。
- 您有一个回响反映迟钝的客户机,但是但愿利用高速的服务器。利用复合 SQL 可以确保在服务器上举办处理奖惩,并仅将末了的效果发送回客户机。
回页首
利用复合 SQL
复合语句块以 BEGIN
要害字入手着手,并以 END
要害字完毕。以下是一个示例:
BEGIN ATOMIC UPDATE employee SET salary = salary * 1.1 WHERE edlevel > 12; UPDATE dept SET budget = budget * 0.8 WHERE profitMargin > 10; INSERT INTO deptList (empno,salary) VALUES (SELECT empno,salary FROM employee WHERE edlevel = 15); END
要因此上的复合语句在第一个 UPDATE
语句就失败了,将无法断定是哪个语句失败了。结构这个复合语句的利益是,发送给服务器并前去的数据仅仅是 SQL 语句和末了的 SQL 前去码。
版权声明:
原创作品,允许转载,转载时请务必以超链接编制标明文章 原始来由 、作者信息和本声明。否则将追查执法责任。