首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

在失败的ALTER TABLE ... ADD CONSTRAINT上回滚事务到保存点

在失败的ALTER TABLE ... ADD CONSTRAINT上回滚事务到保存点,可以使用以下步骤:

  1. 在事务开始时,使用SAVE TRANSACTION命令创建一个保存点。
  2. 执行ALTER TABLE ... ADD CONSTRAINT语句。
  3. 如果执行成功,则提交事务。如果执行失败,则使用ROLLBACK TRANSACTION命令回滚事务到保存点。

以下是一个示例代码:

代码语言:sql
复制
BEGIN TRANSACTION;

-- 创建保存点
SAVE TRANSACTION savepoint_name;

-- 执行ALTER TABLE ... ADD CONSTRAINT语句
ALTER TABLE table_name ADD CONSTRAINT constraint_name constraint_type;

-- 如果执行成功,则提交事务
COMMIT TRANSACTION;

-- 如果执行失败,则回滚事务到保存点
ROLLBACK TRANSACTION savepoint_name;

需要注意的是,回滚事务到保存点并不会删除保存点,保存点仍然存在,可以继续使用。如果不再需要保存点,可以使用RELEASE SAVE TRANSACTION命令将其删除。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

  • MySQL数据库与JDBC编程

    ) 3、MySQL删除约束 ALTER TABLE 表名 DROP INDEX 约束名; 4、大部分数据库删除约束 ALTER TABLE 表名 DROP CONSTRAINT 约束名; 3、PRIMARY...事务提交: 显示提交:使用commit 自动提交:执行DDL或DCL语句,或程序正常退出 事务回滚: 显式回滚:使用rollback 自动回滚:系统错误,或强行退出 普通的提交、回滚都会结束当前事务,...但回滚到指定中间点因为依然处于事务之中,所以不会结束当前事务。...// 关闭自动提交,开启事务 conn.setAutoCommit(false); // 提交事务 conn.commit(); // 回滚事务 conn.rollback(); // 创建保存点 point...为了让批量操作可以正确地处理错误,必须把批量执行的操作视为单个事务,如果批量更新在执行过程中失败,则让事务回滚到批量操作开始之前的状态。

    3.6K40

    Oracle数据库之第三篇

    增加一列 alter table 表名 add(列名 数值类型) 修改一列 alter table 表名 modify(列名 数值类型) 重命名列 alter table 表名 rename...column 旧列名 to 新列名 删除一列 alter table 表名 drop column 列名 */ --给person表增加地址一列 alter table person add...order_detail; --直接删除主表 强制删除 不建议使用 drop table orders cascade constraint /* 事务 作为一个逻辑操作单元 执行的任务全部成功...,SERIALIZABLE,READ ONLY 默认隔离级别是READ COMMITED 事务的保存点: 事务保存点的概念: 保存起执行成功的任务 意义:可以保证执行成功的任务正常提交...使用方法: 声明事务保存点 savepoin 保存点名 出现错误回滚到保存点 rollback to 保存点 再继续提交 commit spring管理事务

    68830

    mysql学习笔记(四)约束与索引

    alter table 表名 add constraint 约束名 primary key (列名)  一个表有且只有一个主键约束 主键约束意味着唯一且非空 创建主键会自动创建对应的索引,删除主键也会删除对应的索引...外键的建立前提是主表必须唯一或者是主键 alter table 表名 add constraint 约束名 foreign key(列名) references 其他表(其他表的列名);  foreign...=表名; 三、检查约束(check constraint)  alter table 表名 add constraint 约束名 check (列名 between 1 and 100)  注:MYSQL...ID值有自动递增的特性,当语句执行失败或事务回滚时,ID值不会回滚,这会导致ID列的值不连续。...show databases;可以看见一个叫information_schema的数据库 show tables;可以看见table_constraint的表,其中保存着约束信息。

    2.1K00

    MySQL(六)

    }(主键); 在创建表后,再新增外键 基本语法: alter table {从表名} add [constraint {外键名}] foregin key({外键字段}) references {主表...关闭自动事务: set autocommit = off; 一旦关闭自动事务,就需要用户来提供是否同步的指令: Commit;: 提交(同步到数据表并清空该事务) Rollback;: 回滚(清空该事务...提交事务或回滚 -- 提交 commit; -- 回滚 rollback; 回滚点(savepoint) 当有一系列事务操作,可以设置回滚点,使得当有事务操作失败时,可以回到该位置重新开始执行。...基本语法: savepoint {回滚点名}; -- 设置回滚点 savepoint sp1; -- 回到回滚点 rollback sp1; 事务特点 事务具有四个特性(ACID): 原子性(Atomicity...): 事务被视为不可分割的最小单元,事务的所有操作要么全部提交成功,要么全部失败回滚 一致性(Consistency): 数据库在事务执行前后都保持一致性状态。

    43210

    SQLite3详细介绍

    ALTER TABLE test_tmp RENAME TO test; 关于SQLite的其它的更新记录,我们可以在官网查看 https://www.sqlite.org/changes.html...; BEGIN EXCLUSIVE TRANSACTION; 开始事务处理 COMMIT END TRANSACTION 保存更改 ROLLBACK 回滚所做的更改 SAVEPOINT 保存点 RELEASE...SAVEPOINT 中的 COMMIT RELEASE 命令可用于释放指定的保存点并提交事务,而COMMIT 命令可用于释放所有保存点并提交事务 ROLLBACK TO 命令 相当于SAVEPOINT...,相当于commit这个事务 RELEASE sp1; END TRANSACTION; 实例2:在保存点中进行回滚操作,在外层事务中进行提交 -- a:100 b:100 BEGIN TRANSACTION...; 实例3:在保存点中进行提交(释放保存点),在外层事务中进行回滚 -- a:100 b:100 BEGIN TRANSACTION; UPDATE account SET money = money

    2.5K70

    Oracle数据库之四大语言

    一、数据定义语言: 1、用于改变数据库结构,包括创建、更改和删除数据库对象; 2、命令: create table :创建 alter table 修改 drop table 删除表 truncate...table 删除表数据(不可以回滚) 2、创建表: -- 创建表 create table sclass(       cid int primary key,       cname varchar...)  3、修改表结构: alter 表名 add/modify/drop(增加/修改/删除)列名 类型名/约束 4、截断: truncate table 表名; --  将表中的所有记录全部删除,但保留表结构...* from java; select * from student; 三、事务控制语言: 1、事务是最小的工作单元,作为一个整体进行工作 2、保证事务的整体成功或失败,称为事务控制; 3、用于事务控制的语句有...: commit:提交并结束事务处理; rollback:撤销事务中已完成的工作; savepoint:标记事务中可以回滚的点; 四、数据控制语言: 1、数据控制语言为用户提供权限控制语言; 2、命令:

    49610

    MySQL基础

    表名(字段 字段类型,字段 字段类型,...); DESC 表名; SHOW CREATE TABLE 表名; ALTER TABLE 表名 [ADD/MODIFY/CHANGE/DROP/RENAME...[CONSTRAINT] [外键名称] FOREIGN KEY(外键字段) REFERENCES 主表(主表列名) ); ALTER TABLE 表名 ADD CONSTRAINT 外键名称 FOREIGN...SET DEFAULT 父表有变更时,子表将外键列设置成一个默认的值(Innodb 不支持) # 多表查询 多表关系 一对多:在多的一方设置外键,关联一的一方的主键 多对多:建立中间表,中间表包含两个外键...子查询:标量子查询、列子查询、行子查询、表子查询 # 事务 事务简介:事务是一组操作的集合,这组操作,要么全部执行成功,要么全部执行失败。...事务操作 START TRANSACTION; -- 开启事务 COMMIT/ROLLBACK; -- 提交/回滚事务 事务四大特性 原子性(Atomicity)、一致性(Consistency

    1K30

    Oracle学习笔记三

    列名1T0列名2 范例:在 person表中增加列 address alter table person add(address varchar2 (10)) 范例:把 person表的 addres...八、Oracle中的事务 这是因为 oracle的事务对数据库的变更的处理,我们必须做提交事务才能让数据真正的插入到数据库中,在同样在执行完数据库变更的操作后还可以把事务进行回滚,这样就不会插入到数据库...如果事务提交后则不可以再回滚。   提交:commit   回滚::rollback Oracle中事务的保存点: ? 事务的隔离级别和属性: ?   .../回滚点:savepoint 保存点的名称 回滚:rollback create table louti( lou number primary key ); insert into louti...:   savepoint 保存点   rollback to 保存点   ORACLE事务隔离级别 : READ COMMITTED  视图: 就像窗户一样, 封装查询结果 , 通常视图创建只读视图

    3.2K51

    程序猿必备技能之MySQL基础篇

    -- 添加外键,stable从表名称,fk_name外键名称,fk外键,mtable主表名称,pk主键字段 alter table stable add constraint fk_name(如:FK_...指令 -- 显示开启事务,两种开启方式是等价的 begin/start transaction; -- 显示提交事务,两种提交方式是等价的 commit/commit work; -- 事务回滚,回滚结束用户的事务...,并撤销正在进行未提交的修改 rollback/rollback work; -- 创建事务保存点,一个事务可以有多个保存点,保存点主要用于事务内部回滚 savepoint idenfier; -- 删除事务保存点...在事务并发情况下,会出现如下几种情况: 脏读    指事务A读取到事务B未提交的数据,若要解决脏读可以在事务B执行操作时加上排他锁。...原理: 主库变更的数据以二进制的形式输出保存到磁盘上; 从库读取主库中的二进制文件,将二进制文件复制到中继日志中; 从库从中继日志中读取,并执行备份,复制方式异步串行化的。

    46220

    mysql基本命令

    ;删除列 alter table 表名 add 列名 数据类型 约束; 增加列 alter table 表名 change 旧列名 新列名 数据类型; 修改字段类型 alter table 表名 modify...表名 add 列名 数据类型 primary key;添加主键 alter table 表名 add primary key(列名);设置主键 alter table 表名 add column 列名...场景:在开发中,有多条语句可能会有同时成功的要求,如果只有一部分成功,则全部失败,回滚到原来的状态。...),系统默认提交确认,在物理表生效 当查询结果为0时,自动提交关闭,执行sql语句,系统会等待用户手动提交确认(commit;),否则可以撤回修改,回滚为原状态(rollback;) 开启事务 一般@@...事务的四大特性(ACID) A 原子性:事务是最小的不可分割的工作单元 C 一致性:在一个事务中,事务前后数据的完整性必须保持一致,sql语句要么全部成功,要么失败,回滚到原状态。

    1.3K10

    MySQL基础(快速复习版)

    key(一般就是主键) 4、插入数据,先插入主表 删除数据,先删除从表 可以通过以下两种方式来删除主表的记录 #方式一:级联删除ALTER TABLE stuinfo ADD CONSTRAINT fk_stu_major...表名 modify column 字段名 字段类型 ; 3、主键 添加主键 alter table 表名 add【 constraint 约束名】 primary key(字段名); 删除主键 alter...table 表名 drop primary key; 4、唯一 添加唯一 alter table 表名 add【 constraint 约束名】 unique(字段名); 删除唯一 alter table...表名 drop index 索引名; 5、外键 添加外键 alter table 表名 add【 constraint 约束名】 foreign key(字段名) references 主表(被引用列...、update、delete 设置回滚点: savepoint 回滚点名; ③结束事务 提交:commit; 回滚:rollback; 回滚到指定的地方:rollback to 回滚点名; 四、并发事务

    4.5K20

    mysql基本操作命令汇总

    varchar(20); //修改字段的数据类型 alter table h_student modify id int(20); //添加字段 alter table h_student add grade...3-3.创建单列索引 alter table student add index singleidx (age); //3-4.创建多列索引 alter table student add index...add constraint FK_ID foreign key(cid) references class(id); //添加数据,这两个表便有了关联若插入中文在终端显示空白,可设置set names...事务的概念,会开启、提交和回滚事务 事务的四种隔离级别 创建存储过程 调用、查看、修改和删除存储过程 事务管理 start transaction; -- 开启事务 commit;...,否则会失败 //事务的回滚,别忘记设置为手动提交的模式 start transaction; update account set money=money-100 where name='a'; update

    1K20
    领券