数据库中关键字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如何使用?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用identity列

如何从 SQL Server SELECT 语句返回新的 IDENTITY 列值?

如何扩展 User.Identity 的可用属性

如何在现有数据库 ASP.NET Core MVC 和 EF Core(DB-First)中使用 Identity

如何扩展User.Identity的可用属性

如何使用 ASP.NET Core Identity 将登录/注册系统添加到现有数据库?