含有自增序列的表中使用truncate与delete的不同结果
一个含有自增序列的表,使用delete跟truncate之后会有什么不同结果呢?
大概说一下,使用truncate,表中的记录全部被清除,如果向表中插入数据,那么数据的排序是从1开始的。
如果使用的是delete,那么记录的排序值不会被清除,它是一次累加上去的。下面给出一个小例子,可以参考一下
------------================================
--Author:oliver QIN
--DATE:2015-12-21
--DESC:INDETITY(1,1)使用delete跟truncate后排序是怎么变化的
---==========================================建表
if exists(select * from sysobjects where ID=OBJECT_ID(N'TB') AND XTYPE='u')
drop table TB
CREATE TABLE TB(ID INT IDENTITY(1,1),NAME NVARCHAR(100),dtDate datetime) INSERT INTO TB SELECT 'JACK',SUBSTRING(convert(varchar,dateadd(dd,-day(getdate()),getdate()),120),1,10) UNION ALL
SELECT 'TOM' ,SUBSTRING(convert(varchar,dateadd(dd,-day(getdate()),getdate()),120),1,10) --===============建立存储过程(delete),先判断是否存在数据,如果存在就删除,然后插入数据,看序列的变化
go
IF((SELECT COUNT(*) FROM SYSOBJECTS WHERE ID=OBJECT_ID(N'P_sample_DELETE') AND XTYPE='P')>0 )
DROP PROC P_sample_DELETE
GO
CREATE PROC P_sample_DELETE
as
begin
if((select count(*) from TB WHERE dtDate=SUBSTRING(convert(varchar,dateadd(dd,-day(getdate()),getdate()),120),1,10))>0)
begin
delete from TB --WHERE dtDate=SUBSTRING(convert(varchar,dateadd(dd,-day(getdate()),getdate()),120),1,10)
end
INSERT INTO TB SELECT 'JACK',SUBSTRING(convert(varchar,dateadd(dd,-day(getdate()),getdate()),120),1,10) UNION ALL
SELECT 'TOM' ,SUBSTRING(convert(varchar,dateadd(dd,-day(getdate()),getdate()),120),1,10)
end GO
--===============建立存储过程(truncate),先判断是否存在数据,如果存在就删除,然后插入数据,看序列的变化 IF((SELECT COUNT(*) FROM SYSOBJECTS WHERE ID=OBJECT_ID(N'P_sample_TRUNCATE') AND XTYPE='P')>0 )
DROP PROC P_sample_TRUNCATE
GO
CREATE PROC P_sample_TRUNCATE
as
begin
if((select count(*) from TB WHERE dtDate=SUBSTRING(convert(varchar,dateadd(dd,-day(getdate()),getdate()),120),1,10))>0)
begin
TRUNCATE TABLE TB
end
INSERT INTO TB SELECT 'JACK',SUBSTRING(convert(varchar,dateadd(dd,-day(getdate()),getdate()),120),1,10) UNION ALL
SELECT 'TOM' ,SUBSTRING(convert(varchar,dateadd(dd,-day(getdate()),getdate()),120),1,10)
end
--------------调用三次TRUNCATE
EXEC P_sample_TRUNCATE
EXEC P_sample_TRUNCATE
EXEC P_sample_TRUNCATE
输出结果如下:
-------------调用三次DELETE
EXEC P_sample_DELETE
EXEC P_sample_DELETE
EXEC P_sample_DELETE
输出结果如下:
含有自增序列的表中使用truncate与delete的不同结果的更多相关文章
- sql server 中删除表中数据truncate和delete的区别(转载自.net学习网)
我们都知道truncate table可以用来删除整个表的内容,它与delete后面不跟where条件的效果是一样.但除此之外,我们还清楚它们之间有其它的区别吗?本章我们将一起讨论truncate与d ...
- Oracle中的Truncate和Delete语句
Oracle中的Truncate和Delete语句 首先讲一下,truncate命令: 语法:TRUNCATE TABLE table; 表格里的数据被清空,存储空间被释放. 运行后会自动 ...
- Sql语句中的truncate,delete,drop的区别
相同点: 1.truncate和不带where子句的delete.以及drop都会删除表内的数据. 不同点: 1. truncate 和 delete 只删除数据不删除表的结构(定义) drop 语句 ...
- oracle 中的truncate 和delete
一.查询表大小,块多少语句 Select SEGMENT_Name,BYTES,BLOCKS,Extents From dba_segments Where segment_name In('BAI_ ...
- MySQL中drop,truncate 和delete的区别
注意:这里说的delete是指不带where子句的delete语句 相同点: truncate和不带where子句的delete, 以及drop都会删除表内的数据 不同点: truncate和 del ...
- MySQL进阶10--DML数据操纵预言: insert/delete/update --多表连接修改/.多表连接删除/多表连接查询-- truncate 和 delete的区别
/* DML -- 数据操纵预言: insert/delete/update */ #一: 插入语句 /* 语法1: insert into 表名(列名,..,列名....) values(值1,值2 ...
- 2019.6.13_SQL语句中----删除表数据drop、truncate和delete的用法
一.SQL中的语法 1.drop table 表名称 eg: drop table dbo.Sys_Test 2.truncate table 表 ...
- mysql 清空表 Truncate及delete区别
1.delete from 表名[where]; 2.truncate table 表名; 3.delete将mysql表中所有记录一条一条删除到删完 4.truncate保留mysql表的结构,重新 ...
- MySql中drop、truncate、delete的区别
1.drop:能对table和view 用法: drop table [is exists] 表1,表2,表3....: ①drop是DDL中删除表的操作,会删除表结构和所有数据,并释放空间. ②并 ...
随机推荐
- java8中的Stream
Collection.stream() / parallelStream() 1. Stream 1)Filter stringCollection .stream().filter((s) - ...
- 用Chrome浏览器模拟手机,android,iphone,ipad访问网站
很多网站都通过User-Agent来判断浏览器类型,如果是3G手机,显示手机页面内容,如果是普通浏览器,显示普通网页内容.谷歌Chrome浏览 器,可以很方便地用来当3G手机模拟器.在Windows的 ...
- apache2.4 +django1.9+python3+ubuntu15.10
这是我这几天学习部署django的总结,中间出现了不少的问题.特此记录下来,用来复习巩固,同时也希望给想学习的同学一些参考. 第一步:我在ubuntu上装的是python3.sudo apt-get ...
- angularJs中筛选功能-angular.filter-1
技术分享:http://www.ncloud.hk/%E6%8A%80%E6%9C%AF%E5%88%86%E4%BA%AB/angular-filter-learn-1/ 以下介绍为自己在使用ang ...
- 上架第一个APP到苹果商店被拒绝5次
- : Metadata Rejected (APP中的注册时跳转的 - 用户协议视图没有内容).Waiting For Review 6天 In Review 1天 第二次被拒绝 -- : Met ...
- 新颖的O2O商业模式,江水平和他的装修队
文/秦刚 江水平是我微信上的朋友,有一天他给我留言说,秦刚老师我觉得你应该采访我,因为我的商业模式非常新颖有趣,应该能够给很多创业者启发. 我让江水平把他的商业模式写给我,他效率很高,一天就写好给我了 ...
- Python之类型转换
函数 描述 int(x [,base]) 将x转换为一个整数 long(x [,base] ) 将x转换为一个长整数 float(x) 将x转换到一个浮点数 complex(real [,imag]) ...
- [Excel操作]Microsoft Office Excel 不能访问文件
最近,客户服务器迁移,因操作系统环境变化而引起的的环境问题一堆,遇到的问题并解决方法在“[Excel]操作”类别会体现. Microsoft Office Excel 不能访问文件“C:\\LMSEx ...
- windowSoftInputMode属性详解
转自:http://blog.csdn.net/twoicewoo/article/details/7384398 activity主窗口与软键盘的交互模式,可以用来避免输入法面板遮挡问题,Andro ...
- Quartz 第六课 CronTrigger(官方文档翻译)
CronTriggers使用的频率比SimpleTrigger跟高.如果需要schedule 中触发Job的方式类似于日历的形式而不是一个确定的是时间间隔,那就需要使用CronTrigger. 对于C ...