时尚大气的网站设计,wordpress可视化编辑器 windows,网站开发初级技术人员,网站开发上海工资TRUNCATE和DELETE都是用来删除表中数据的SQL命令#xff0c;但它们的工作方式和使用场景有所不同#xff1a; DELETE命令#xff1a;DELETE命令用于从表中删除一行、多行或所有行。你可以添加WHERE子句来指定要删除的行。例如#xff0c;DELETE FROM table_name WHERE cond…TRUNCATE和DELETE都是用来删除表中数据的SQL命令但它们的工作方式和使用场景有所不同 DELETE命令DELETE命令用于从表中删除一行、多行或所有行。你可以添加WHERE子句来指定要删除的行。例如DELETE FROM table_name WHERE condition;。使用DELETE命令时每一行都会被单独删除并且触发器会被触发。此外DELETE命令会记录下每个删除的行因此你可以在事务中使用ROLLBACK命令来撤销DELETE操作。 TRUNCATE命令TRUNCATE命令用于删除表中的所有行。与DELETE不同TRUNCATE会删除表的数据并重置表的身份计数器如果存在。TRUNCATE操作更快因为它不会记录每个删除的行也不会触发触发器。然而你不能在事务中撤销TRUNCATE操作。 总的来说如果你需要删除表中的所有数据并且不需要撤销操作那么TRUNCATE是一个好选择。如果你需要删除特定的行或者需要在事务中撤销删除操作那么你应该使用DELETE命令。 CREATE DEFINERroot% PROCEDURE proc_test_date()
BEGIN#Routine body goes here...start TRANSACTION; INSERT into temp_test_date(type,create_time) select sysdate,sysdate();INSERT into temp_test_date(type,create_time) select now,NOW();select SLEEP(10);INSERT into temp_test_date(type,create_time) select sysdate,sysdate();INSERT into temp_test_date(type,create_time) select now,NOW();commit;
END 执行truncate call proc_test_date();select * from temp_test_date;truncate table temp_test_date;call proc_test_date();select * from temp_test_date; 然后发现 两次的执行结果id都是续上的 执行delete call proc_test_date();
select * from temp_test_date;
delete from temp_test_date;
call proc_test_date();
select * from temp_test_date; 查看结果 发现两次的查询结果id并没有续上 这就是truncate和delete的区别
需要注意的是在什么情况下id会不会连续呢
在一个添加事务执行时若是事务没有提交那么其实以及申请了id
后面插入的数据会默认id以及有了然后就会越过这个不存在的id
执行函数
##在事务提交之前结束
call proc_test_date();
##等待事务提交
call proc_test_date();select * from temp_test_date; 发现id12的数据并不存在