【openGauss笔记】SQL语法-12 事务处理语句

文章目录

  • 12. 事务处理语句

CREATE TABLE warehouse (
	w_id SMALLINT,
	w_name VARCHAR(10),
	w_street_1 VARCHAR(20),
	w_street_2 VARCHAR(20),
	w_city VARCHAR(20),
	w_state CHAR(2),
	w_zip CHAR(9),
	w_tax DECIMAL(4,2),
	w_ytd DECIMAL(12,2)
);

12. 事务处理语句

事务是由一组SQL语句序列构成的原子操作集合,它具有原子性、一致性、隔离性和持久性的特点。

用户在开始执行一个SQL语句时,实际上就已经开始了一个隐式的事务,而SQL语句执行结束,隐式的事务也会根据SQL语句的执行成功与否分别进行提交(Commit)或者回滚(Rollback)操作。

但是对于多条SQL语句组成的事务,则需要显式地指定**事务块(Transaction Block)**的边界,通常通过如下SQL命令来指定事务块。

  1. BEGIN:开始一个事务。
  2. COMMIT:在事务块中的所有SQL语句成功执行后,将事务提交,事务一旦提交,事务块中的所有修改就会被记录下来,不会产生数据丢失,保证事务的持久性。
  3. ROLLBACK:在事务执行失败时,需要将已经在事务块中执行过的SQL语句所产生的修改进行回滚,或者应用程序需要临时中断事务时,也可以显式地通过ROLLBACK命令回滚事务,在数据库重启时也会对未完成的事务做ROLLBACK处理。

例2-52:对warehouse表中的w-name(仓库名称)进行修改,然后事务提交,名称修改成功。具体语句如下:

BEGIN;
UPDATE warehouse SET w_name = 'W_LF' WHERE w_id = 1;
COMMIT;

例2-53:对warehouse表中的w-name(仓库名称)进行修改,然后事务提交,名称没有被真正地修改。具体语句如下:

BEGIN;
UPDATE warehouse SET w_name = 'W_LF' WHERE w_id = 1;
ROLLBACK;

你可能感兴趣的:(openGauss,sql,数据库)