首页
学习
活动
专区
工具
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管理事务

    68430

    MySQL(六)

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

    43010

    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表,其中保存着约束信息。

    2K00

    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.4K70

    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

    99830

    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、命令:

    45610

    程序猿必备技能之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执行操作时加上排他锁。...原理: 主库变更数据以二进制形式输出保存到磁盘上; 从库读取主库中二进制文件,将二进制文件复制中继日志中; 从库从中继日志中读取,并执行备份,复制方式异步串行化

    46020

    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基本命令

    ;删除列 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 表名 addconstraint 约束名】 primary key(字段名); 删除主键 alter...table 表名 drop primary key; 4、唯一 添加唯一 alter table 表名 addconstraint 约束名】 unique(字段名); 删除唯一 alter table...表名 drop index 索引名; 5、外键 添加外键 alter table 表名 addconstraint 约束名】 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
    领券