我对查询感到困惑。
我需要找出添加到表中的最后一行,该表的数据类型为Uniqueidentifier列为:aspnet_Applications.ApplicationId注意:此列Uniqueidentifier不是NOT和IDENTITY列。
我还需要插入最后一行并在其他表aspnet_Users.ApplicationId上更新它
我尝试在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, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY],
UNIQUE NONCLUSTERED
(
[ApplicationName] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, 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, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, 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',
'',
0,
sysutcdatetime()
);
这需要做更多的工作,但是对于您的插入,即使您在ApplicationID上已经具有DEFAULT值,也可以执行以下操作:
DECLARE @MyIdentity uniqueidentifier;
SET @MyIdentity = NewID();
INSERT INTO dbo.aspnet_Applications
(
ApplicationName,
LoweredApplicationName,
ApplicationId,
Description
)
VALUES
(
'x',
'x',
@MyIdentity,
'Dummy text'
);
SELECT @MyIdentity
本质上,您预先设置了GUID,因此您已经知道要插入的内容。
我需要在表中插入所有单元格的唯一数据。我的表有3列,如果所有3个单元格的值相同,我需要忽略insert。 例如,我有一个表:|column_1 | column_2 | column_3| 以及此表的值: |val 1|val 2|val 3| |val 1|val 2|val 5| |val 1|val 2|val 3| |val 1|val 2|val 3| 所以我只需要插入值1和2,因为3和
问题内容: 我有一个简单的测试,尝试在其中更新对象,但是合并似乎在执行插入操作而不是更新操作。 } 这是我的更新方法 更新代码 现在,我收到以下错误无法提交JPA事务;嵌套的异常是javax.persistence.RollbackException:标记为rollbackOnly的事务 问题答案: 我有一个版本列,当种子数据插入数据库时未设置该列。因此,所有有关更新和删除的问题
问题内容: 我正在使用Laravel 4,我需要在MySQL表中插入一些行,并且需要找回插入的ID。 对于单行,我可以使用,但是它不支持多行。如果我至少能像普通的MySQL一样检索第一行的ID,就足以找出其他的ID。 问题答案: 根据用户Xrymz的建议,返回第一个。 根据Schemaapi 接受数组 所以你必须能够 就是说,如果使用MySQL,则可以由此检索第一个ID并计算其余的ID。还有一个功
问题内容: 我在做一个用用java Postgres的。有什么方法可以确定是插入行还是更新行? 问题答案: 您可以查看“系统”列来说明不同之处。在这种情况下,它用于插入的行。 这是建立在未记录的实现细节上的,该细节在将来的版本中可能会更改(即使可能性不大)。它适用于Postgres 9.5和9.6。 它的优点:您无需引入其他列。
我知道如果数据是唯一的,理论上唯一索引会比非唯一索引快。 因为唯一索引能够提供更多信息,并让查询优化器选择更有效的执行计划。 我正在做一些测试,想证明唯一索引可能比执行计划中的非唯一索引更好,但结果显示它们是相同的。。。 我创建了一个表和两个索引(< code>IX_ID_T3不唯一,< code>UIX_ID_T3唯一),然后插入了1000000个样本行。 插入数据后,我运行< code >真空
我正在将行插入房间数据库,我想检查该行是否已成功插入。 这是我的刀 当我插入一行时,响应为1、2、3,依此类推。。所以它返回的是(是这样吗?) 因此,需要检查行是否正确插入。 我是否可以检查插入的rowId是否大于0,然后将其成功插入数据库。 注意:我得到的结果是1,2,3等,应该是rowId。 请建议这种方法是否正确?基本上,如果插入不成功,我想阻止用户继续 谢谢你的建议和意见
问题内容: 由于MySQL不支持IF EXISTS,因此我很难考虑在MySQL中执行以下伪指令的语法: 我本以为CASE会适合这种情况,但是对我而言,我无法想到正确的语法。我会使用唯一索引,但是每一列都需要允许重复,这只是所有列的匹配组合,它们必须是唯一的,而不是字段本身。 有人告诉我在所有列上使用复合键可以避免重复的插入,但是从我收集的数据来看,我需要再使用一个不同的插入。 简短版:在MySQL
问题内容: 我有一个程序,告诉我它有多远。 因此,如果len(some_list)为50,我将最后一行打印50遍。我想打印一行并继续更新该行。我知道我知道这可能是您整天都会阅读的最棘手的问题。我只是想不通我需要输入到Google以获得答案的四个词。 更新!我尝试了mvds的建议,认为正确。新密码 完成百分比只是一个字符串(我是第一次尝试抽象,现在是抽象的)。现在的结果是,它运行该程序,直到程序结束