⑴ 请问:提交一个事务采用的sql动词为
SQL的事务具有原子性,一个不可分割的整体,要么都提交,要么都失败。
您问到的提交的动词为:commit,以确认自己的更新;
而如果不想进行提交,可以用rollback进行回滚;
当然前提是对DML语句(数据操纵语言,如insert,update等),
对DDL(数据定义语言,如create等)是无效的,因为DDL语句包含commit的意思。
希望回答让您满意。
⑵ 详解SQL中drop,delete和truncate的异同
不同点:1.从删除内容上区分:truncate和delete只删除数据不删除表的结构(定义)drop语句将删除表的结构、被依赖的约束(constrain),触发器(trigger),索引(index);依赖于该表的存储过程/函数将保留,但是变为invalid状态.2.从语句类型上来区分:delete语句是dml,这个操作会放到rollbacksegement中,事务提交之后才生效;如果有相应的trigger,执行的时候将被触发.truncate,drop是ddl,操作立即生效,原数据不放到rollbacksegment中,不能回滚.操作不触发trigger.3.从对表空间的影响来区分:delete语句不影响表所占用的extent,高水线(highwatermark)保持原位置不动drop语句将表所占用的空间全部释放truncate语句缺省情况下将空间释放到minextents个extent,除非使用reusestorage;而且truncate会将高水线复位(回到最开始).4.从速度的区别:一般来说:drop>truncate>delete
⑶ SQL 语句里delete 和drop有什么区别
1、执行速度不同
drop语句的速度要大于delete语句。
2、语言种类不同
delete语句是DML语言,不会自动提交。
drop语句是DDL语言,执行后会自动提交。
3、功能不同
delete语句用于删除局部性数据如表中的某一元组。
drop语句一般用于删除整体性数据如表,模式,索引,视图,完整性限制等。
4、删除形式不同
delete语句删除内容、释放空间但不删除定义,但是delete既可以对行数据进行删除,也可以对整表数据进行删除。
drop语句删除内容和定义,并释放空间。执行drop语句,将使此表的结构一起删除。
⑷ 关于SQL数据库事务的提交问题
如果第二种写法取得@@error值后仅仅执行不带附加选项的rollback操作的话,与第一种写法是没有什么区别的,都会回滚的事务的开始,也就是begin transaction开始的位置。
如果在rollback中指定了回滚到某个保存点,那么肯定就跟第一种写法有区别了。我们可以在事务执行某些操作后设置一个或多个保存点,这样就可以使事务回滚到指定的保存点,而不必全部回滚。
⑸ 事务在SQL中有什么作用
事务的好处在于,当你需要对多个表进行相关性操作时,使用BeginTrans()开启事务,然后操作,如果中间哪个表更新出错了,或者数据有问题,你可以用RollBack()方法在取消之前的相关性操作,如果没有错,那就使用Commit()方法提交你的修改。另外,在这个过程中,所有你改动的内容只对你自己有效,别人不能知道你改了什么,也不能对你正在改的表做修改,直到你提交之后,别人才能修改这些表,检索出你修改过的内容。
⑹ 在SQL语言中,用于事务提交的语句是什么,收回权限的命令是什么
提交事务:commit transaction;回滚事务:rollback transaction
⑺ 在SQL执行事务操作的时候的问题
默认的话是使用完毕后就释放的,当然,如果人为设置了事务的隔离级别,可以参考sql帮助文档的介绍:
语法
SET TRANSACTION ISOLATION LEVEL
{ READ COMMITTED
| READ UNCOMMITTED
| REPEATABLE READ
| SERIALIZABLE
}
参数
READ COMMITTED
指定在读取数据时控制共享锁以避免脏读,但数据可在事务结束前更改,从而产生不可重复读取或幻像数据。该选项是 SQL Server 的默认值。
READ UNCOMMITTED
执行脏读或 0 级隔离锁定,这表示不发出共享锁,也不接受排它锁。当设置该选项时,可以对数据执行未提交读或脏读;在事务结束前可以更改数据内的数值,行也可以出现在数据集中或从数据集消失。该选项的作用与在事务内所有语句中的所有表上设置 NOLOCK 相同。这是四个隔离级别中限制最小的级别。
REPEATABLE READ
锁定查询中使用的所有数据以防止其他用户更新数据,但是其他用户可以将新的幻像行插入数据集,且幻像行包括在当前事务的后续读取中。因为并发低于默认隔离级别,所以应只在必要时才使用该选项。
SERIALIZABLE
在数据集上放置一个范围锁,以防止其他用户在事务完成之前更新数据集或将行插入数据集内。这是四个隔离级别中限制最大的级别。因为并发级别较低,所以应只在必要时才使用该选项。该选项的作用与在事务内所有 SELECT 语句中的所有表上设置 HOLDLOCK 相同。
注释
一次只能设置这些选项中的一个,而且设置的选项将一直对那个连接保持有效,直到显式更改该选项为止。这是默认行为,除非在语句的 FROM 子句中在表级上指定优化选项。
SET TRANSACTION ISOLATION LEVEL 的设置是在执行或运行时设置,而不是在分析时设置。
⑻ sql的事务问题
如果没有猜错,楼主应该是在执行COMMIT TRANSACTION tran3 后,直接在当前的查询界面查看的表里的数据吧?对于当前会话,即使你没有执行COMMIT,所有数据都会在当前的会话里发生变化,你可以不执行COMMIT TRANSACTION tran3,直接查看表里的数据,你会看到即使没有提交任何事物,表里的数据还是发生变化了。如果你再打开一个查询窗口,你会发现直接从testtran 表里select数据是会一直等待的,因为其它会话(也就是开始你执行begin tran那个会话)有事务没有提交,表是锁定的。事务是用来保证多个会话之间不会应为事务不一致而产生脏数据。对同一会话,是看不出效果的。
⑼ SQL中表示事务执行成功的语句是什么
if(mysql_affected_rows() > 0) {
echo "成功";
}
int mysql_affected_rows ( [resource link_identifier] ) :
执行成功则返回受影响的行的数目,如果最近一次查询失败的话,函数返回 -1。
⑽ sql 中关于delete drop alter
sql中delete,drop ,truncate都代表删除,但3者又有一些区别
1. truncate和 delete只删除数据不删除表的结构(定义)
drop语句将删除表的结构被依赖的约束(constrain),触发器(trigger),索引(index); 依赖于该表的存储过程/函数将保留,但是变为invalid状态.
2.delete语句是dml,这个操作会放到rollback segement中,事务提交之后才生效;如果有相应的trigger,执行的时候将被触发.
truncate,drop是ddl, 操作立即生效,原数据不放到rollback segment中,不能回滚. 操作不触发trigger.
3.delete语句不影响表所占用的extent, 高水线(high watermark)保持原位置不动
显然drop语句将表所占用的空间全部释放
truncate 语句缺省情况下见空间释放到 minextents个 extent,除非使用reuse storage; truncate会将高水线复位(回到最开始).
4.速度,一般来说: drop>; truncate >; delete
5.安全性:小心使用drop 和truncate,尤其没有备份的时候.否则哭都来不及
使用上,想删除部分数据行用delete,注意带上where子句. 回滚段要足够大.
想删除表,当然用drop
想保留表而将所有数据删除. 如果和事务无关,用truncate即可. 如果和事务有关,或者想触发trigger,还是用delete.
如果是整理表内部的碎片,可以用truncate跟上reuse stroage,再重新导入/插入数据
在实际应用中,三者的区别是明确的。
当你不再需要该表时, 用 drop;
当你仍要保留该表,但要删除所有记录时, 用 truncate;
当你要删除部分记录时(always with a WHERE clause), 用 delete.
而alter是对表结构的修改.
希望对你理解有帮助。