数据库中关键字identity如何使用?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数据库中关键字identity如何使用?相关的知识,希望对你有一定的参考价值。
在数据库中,常用的一个流水编号通常会使用
identity
栏位来进行设置,
这种编号的好处是一定不会重覆,
而且一定是唯一的,
这对table中的唯一值特性很重要,
通常用来做客户编号,
订单编号等功能,
以下介绍关于此种栏位常用方式及相关技术.
CREATE
TABLE
products
(id
int
IDENTITY
PRIMARY
KEY,
product
varchar(40))
取得identity值:
因为
identity
特性,
所以在
insert
into
该
table
时,
不能指定该
identity
栏位值,
仅能指定其他栏位值,
而
identity
由资料库维护,
所以一般要在
insert
后取得该
identity
栏位值,
则通常使用下面方式:
利用全局变量
@@identity
来取得最后影响的
insert
后产生的
identity
值,
如此一来便能方便地使用
identity
栏位.
若要启用识别插入(identity
insert)时,
也就是如空缺号要指定
identity
栏位值时,
或者是处理资料表整理或备出时,
会用到的方式:
set
identity_insert
products
on
insert
into
products
(id,
product)values(12,
'screwdriver')
要注意的地方是可以
insert
空缺号,
也可以加至最后,
但系统会自动更新
identity
至最大值,
要注意一旦启用
identity_insert
时,
就一定要给定
identity
值,
另外并不能
update
该
identity
栏位值,
也就是说
identity_insert
该
identity
栏位仅
for
insert,
不能
update.
查询目前
identity
值:
有时我们需要查询目前
table
中该
identity
栏位最大值是多少时,
可以利用
dbcc
指令,
如下:
dbcc
checkident('product',
NORESEED)
可以获得目前最大值的结果.
重设目前最大
identity
值:
一样利用
dbcc
指令,
如下:
dbcc
checkident('product',RESEED,100)
如此一来,
便能将目前的最大
identity
值指向100,
当然若故意设比目前最大值小时,
系统仍会接受,
但若
identity
遇上重覆资料时(如将
identity
设为
primary
key时),
将会发生重大问题,
该
table
变成无法
insert
资料,
因为会发生
primary
key
violation,
解决方法当然就是将目前的
identity
修复,
直接使用
dbcc
checkident('products',
RESEED)
或
dbcc
checkident('products') 参考技术A 您好!identity(n,m)n指的是初始值,m增量
使用时必须确保所附的属性列的变化是按照m的值增长的,否则会出现错误
如有疑问,请追问。 参考技术B identity
是代表唯一的
你只要记住这一条,在你获取数据或创建数据库表格的时候
都要准确应用
如何删除exchange中用户邮件
1,按邮件主题删除特定用户特定邮件:以下示例为删除用户sky里的邮件主题含有'Product Discussion'关键字的邮件。
Search-Mailbox -Identity "sky" -SearchQuery "Subject:'Product Discussion'" -DeleteContent
执行命令结果如下:
[PS] C:\Windows\system32>Search-Mailbox -Identity "sky" -SearchQuery "Subject:'Product Discussion'" -DeleteContent
Confirm
Deleting content from mailboxes sky
[Y] Yes [A] Yes to All [N] No [L] No to All [?] Help (default is "Y"): y
RunspaceId : b76da44c-a58b-4fdd-b258-8e6031d0899b
Identity : pugster.com/Pugster Users/China Shanghai/Sky Chen
TargetMailbox :
TargetPSTFile :
Success : True
TargetFolder :
ResultItemsCount : 619
ResultItemsSize : 5.43 MB (5,694,285 bytes)
2,按发信人地址删除特定用户特定邮件:
以下示例为删除用户sky里的发信人为'sharepoint@pugster.com'的邮件。
Search-Mailbox -Identity "sky" -SearchQuery "From:'sharepoint@pugster.com'" -DeleteContent
删除来自某一邮箱的某一时间段的邮件;
Search-Mailbox -Identity "sky" -SearchQuery "From:'sharepoint@pugster.com' and Received:01/01/2001..11/01/2011" -DeleteContent
执行命令结果如下:
[PS] C:\Windows\system32>Search-Mailbox -Identity "sky" -SearchQuery "From:'sharepoint@pugster.com'" -DeleteContent
Confirm
Deleting content from mailboxes sky
[Y] Yes [A] Yes to All [N] No [L] No to All [?] Help (default is "Y"): y
RunspaceId : b76da44c-a58b-4fdd-b258-8e6031d0899b
Identity : pugster.com/Pugster Users/China Shanghai/Sky Chen
TargetMailbox :
TargetPSTFile :
Success : True
TargetFolder :
ResultItemsCount : 2259
ResultItemsSize : 17.72 MB (18,578,615 bytes)
3,按信件内容关键字删除特定用户特定邮件:
以下示例为删除用户sky里的邮件内容里含有为Modify my alert settings的邮件。(因为sharepoint里更换发信人只是最近一个月的事,以前的sharepoint邮件要进行更仔细的甄别。)
Search-Mailbox -Identity "sky" -SearchQuery "body:'Modify my alert settings'" -DeleteContent
执行命令结果如下:
[PS] C:\Windows\system32>Search-Mailbox -Identity "sky" -SearchQuery "body:'Modify my alert settings'" -DeleteContent
Confirm
Deleting content from mailboxes sky
[Y] Yes [A] Yes to All [N] No [L] No to All [?] Help (default is "Y"): y
RunspaceId : ed49ff14-6c0a-47b2-8fe4-ccda75b10986
Identity : pugster.com/Pugster Users/China Shanghai/Sky Chen
TargetMailbox :
TargetPSTFile :
Success : True
TargetFolder :
ResultItemsCount : 1345
ResultItemsSize : 10.66 MB (11,175,123 bytes)
详细信息请查看:http://msdn.microsoft.com/en-us/library/ee693615.aspx
在Exchange上设置脚本命令批量删除邮件;
$end = (Get-Date).AddDays(-10)
##设置删除时间为10天前
$UserItems='Ciro','sunny','lilian','annie'
##本想写循环导出,但清理范围只限于army服务器,且很多帐号不用于sharepoint,还有部份帐号有小小问题,所以第一次就索性导出列表之后,手工定义邮件用户数组
for($i=0;$i –lt $UserItems.Length;$i++)
$UserItem=$UserItems[$i]
Search-Mailbox -Identity $UserItem -SearchQuery "From:'sharepoint@pugster.com' and Received:<$end" -DeleteContent -Force
##按发信人sharepoint@pugster.com为特征,删除10天前sharepoint邮件
Search-Mailbox -Identity $UserItem -SearchQuery "Subject:'sharepoint calling you' and Received:<$end" -DeleteContent -Force
##按邮件标题sharepoint calling you为特征,删除10天前sharepoint邮件
Search-Mailbox -Identity $UserItem -SearchQuery "Body:'Modify my alert settings' and Received:<$end" -DeleteContent -Force
##由于在sharepoint升级这些特征之前,各个bbs特征并不统一,故取出body含有Modify my alert settings关銉字来删除10天前sharepoint邮件 参考技术A 1,按邮件主题删除特定用户特定邮件:
以下示例为删除用户sky里的邮件主题含有'Product Discussion'关键字的邮件。
Search-Mailbox -Identity "sky" -SearchQuery "Subject:'Product Discussion'" -DeleteContent
执行命令结果如下:
[PS] C:\Windows\system32>Search-Mailbox -Identity "sky" -SearchQuery "Subject:'Product Discussion'" -DeleteContent
Confirm
Deleting content from mailboxes sky
[Y] Yes [A] Yes to All [N] No [L] No to All [?] Help (default is "Y"): y
RunspaceId : b76da44c-a58b-4fdd-b258-8e6031d0899b
Identity : pugster.com/Pugster Users/China Shanghai/Sky Chen
TargetMailbox :
TargetPSTFile :
Success : True
TargetFolder :
ResultItemsCount : 619
ResultItemsSize : 5.43 MB (5,694,285 bytes)
2,按发信人地址删除特定用户特定邮件:
以下示例为删除用户sky里的发信人为'sharepoint@pugster.com'的邮件。
Search-Mailbox -Identity "sky" -SearchQuery "From:'sharepoint@pugster.com'" -DeleteContent
删除来自某一邮箱的某一时间段的邮件;
Search-Mailbox -Identity "sky" -SearchQuery "From:'sharepoint@pugster.com' and Received:01/01/2001..11/01/2011" -DeleteContent
执行命令结果如下:
[PS] C:\Windows\system32>Search-Mailbox -Identity "sky" -SearchQuery "From:'sharepoint@pugster.com'" -DeleteContent
Confirm
Deleting content from mailboxes sky
[Y] Yes [A] Yes to All [N] No [L] No to All [?] Help (default is "Y"): y
RunspaceId : b76da44c-a58b-4fdd-b258-8e6031d0899b
Identity : pugster.com/Pugster Users/China Shanghai/Sky Chen
TargetMailbox :
TargetPSTFile :
Success : True
TargetFolder :
ResultItemsCount : 2259
ResultItemsSize : 17.72 MB (18,578,615 bytes)
3,按信件内容关键字删除特定用户特定邮件:
以下示例为删除用户sky里的邮件内容里含有为Modify my alert settings的邮件。(因为sharepoint里更换发信人只是最近一个月的事,以前的sharepoint邮件要进行更仔细的甄别。)
Search-Mailbox -Identity "sky" -SearchQuery "body:'Modify my alert settings'" -DeleteContent
执行命令结果如下:
[PS] C:\Windows\system32>Search-Mailbox -Identity "sky" -SearchQuery "body:'Modify my alert settings'" -DeleteContent
Confirm
Deleting content from mailboxes sky
[Y] Yes [A] Yes to All [N] No [L] No to All [?] Help (default is "Y"): y
RunspaceId : ed49ff14-6c0a-47b2-8fe4-ccda75b10986
Identity : pugster.com/Pugster Users/China Shanghai/Sky Chen
TargetMailbox :
TargetPSTFile :
Success : True
TargetFolder :
ResultItemsCount : 1345
ResultItemsSize : 10.66 MB (11,175,123 bytes)
详细信息请查看:http://msdn.microsoft.com/en-us/library/ee693615.aspx
在Exchange上设置脚本命令批量删除邮件;
$end = (Get-Date).AddDays(-10)
##设置删除时间为10天前
$UserItems='Ciro','sunny','lilian','annie'
##本想写循环导出,但清理范围只限于army服务器,且很多帐号不用于sharepoint,还有部份帐号有小小问题,所以第一次就索性导出列表之后,手工定义邮件用户数组
for($i=0;$i –lt $UserItems.Length;$i++)
$UserItem=$UserItems[$i]
Search-Mailbox -Identity $UserItem -SearchQuery "From:'sharepoint@pugster.com' and Received:<$end" -DeleteContent -Force
##按发信人sharepoint@pugster.com为特征,删除10天前sharepoint邮件
Search-Mailbox -Identity $UserItem -SearchQuery "Subject:'sharepoint calling you' and Received:<$end" -DeleteContent -Force
##按邮件标题sharepoint calling you为特征,删除10天前sharepoint邮件
Search-Mailbox -Identity $UserItem -SearchQuery "Body:'Modify my alert settings' and Received:<$end" -DeleteContent -Force
##由于在sharepoint升级这些特征之前,各个bbs特征并不统一,故取出body含有Modify my alert settings关銉字来删除10天前sharepoint邮件
以上是关于数据库中关键字identity如何使用?的主要内容,如果未能解决你的问题,请参考以下文章
如何从 SQL Server SELECT 语句返回新的 IDENTITY 列值?