sql – 检索与Uniqueidentifier一起插入的最后一行,它不是IDENTI
发布时间:2020-12-12 06:46:49 所属栏目:MsSql教程 来源:网络整理
导读:我对一个查询感到困惑. 我需要找到一个表中添加的LAST行,其中包含一个数据类型为Uniqueidentifier的列 专栏是: aspnet_Applications.ApplicationId 注意:此列Uniqueidentifier不是和IDENTITY列. 我还需要插入最后一行并在另一个表上更新它 aspnet_Users.App
我对一个查询感到困惑.
我需要找到一个表中添加的LAST行,其中包含一个数据类型为Uniqueidentifier的列 我还需要插入最后一行并在另一个表上更新它 我尝试在MS SQL 2008中使用SCOPE_IDENTITY但不起作用,因为SCOPE_IDENTITY仅适用于IDENTITY列. 在这里我的代码.有任何想法吗? CREATE DATABASE Test; GO USE Test; GO -- Create entities CREATE TABLE [dbo].[aspnet_Applications]( [ApplicationName] [nvarchar](256) NOT NULL,[LoweredApplicationName] [nvarchar](256) NOT NULL,[ApplicationId] [uniqueidentifier] NOT NULL,[Description] [nvarchar](256) NULL,PRIMARY KEY NONCLUSTERED ( [ApplicationId] ASC )WITH (PAD_INDEX = OFF,STATISTICS_NORECOMPUTE = OFF,IGNORE_DUP_KEY = OFF,ALLOW_ROW_LOCKS = ON,ALLOW_PAGE_LOCKS = ON) ON [PRIMARY],UNIQUE NONCLUSTERED ( [LoweredApplicationName] ASC )WITH (PAD_INDEX = OFF,UNIQUE NONCLUSTERED ( [ApplicationName] ASC )WITH (PAD_INDEX = OFF,ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] ) ON [PRIMARY] GO ALTER TABLE [dbo].[aspnet_Applications] ADD DEFAULT (newid()) FOR [ApplicationId] GO CREATE TABLE [dbo].[aspnet_Users]( [ApplicationId] [uniqueidentifier] NOT NULL,[UserId] [uniqueidentifier] NOT NULL,[UserName] [nvarchar](256) NOT NULL,[LoweredUserName] [nvarchar](256) NOT NULL,[MobileAlias] [nvarchar](16) NULL,[IsAnonymous] [bit] NOT NULL,[LastActivityDate] [datetime] NOT NULL,PRIMARY KEY NONCLUSTERED ( [UserId] ASC )WITH (PAD_INDEX = OFF,ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] ) ON [PRIMARY] GO ALTER TABLE [dbo].[aspnet_Users] WITH CHECK ADD FOREIGN KEY([ApplicationId]) REFERENCES [dbo].[aspnet_Applications] ([ApplicationId]) GO ALTER TABLE [dbo].[aspnet_Users] ADD DEFAULT (newid()) FOR [UserId] GO ALTER TABLE [dbo].[aspnet_Users] ADD DEFAULT (NULL) FOR [MobileAlias] GO ALTER TABLE [dbo].[aspnet_Users] ADD DEFAULT ((0)) FOR [IsAnonymous] GO -- Add data DECLARE @MyIdentity binary(16); INSERT INTO dbo.aspnet_Applications ( ApplicationName,LoweredApplicationName,Description ) VALUES ( 'x','x','Dummy text' ); SET @MyIdentity = SCOPE_IDENTITY(); -- DOES NOT WORK PRINT @MyIdentity; -- DOES NOT WORK INSERT INTO dbo.aspnet_Users ( ApplicationId,UserName,LoweredUserName,MobileAlias,IsAnonymous,LastActivityDate ) VALUES ( @MyIdentity,'Administrator','administrator','',sysutcdatetime() ); 解决方法这是一个更多的工作,但对于您的插入,即使您已经在ApplicationID上有一个DEFAULT值,您可以这样做:DECLARE @MyIdentity uniqueidentifier; SET @MyIdentity = NewID(); INSERT INTO dbo.aspnet_Applications ( ApplicationName,ApplicationId,@MyIdentity,'Dummy text' ); SELECT @MyIdentity 基本上,您事先设置了GUID,因此您已经知道要插入的内容. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容