我试图在INSERT声明后得到一个键值.示例:我有一个包含属性name和id的表.id是生成的值.
INSERT INTO table (name) VALUES('bob');
Run Code Online (Sandbox Code Playgroud)
现在我想在同一步骤中恢复身份.这是怎么做到的?
我们正在使用Microsoft SQL Server 2008.
我们所有使用关系数据库的人都已经学习(或正在学习)SQL是不同的.引出期望的结果,并且有效地进行,涉及一个繁琐的过程,其部分特征是学习不熟悉的范例,并发现我们最熟悉的一些编程模式在这里不起作用.您见过(或自己承诺)的常见反模式有哪些?
如果我有一个插入语句,例如:
INSERT INTO MyTable
(
Name,
Address,
PhoneNo
)
VALUES
(
'Yatrix',
'1234 Address Stuff',
'1112223333'
)
Run Code Online (Sandbox Code Playgroud)
如何使用OUTPUT子句设置@var INT新行的标识值(被调用Id)?例如,我已经看过将INSERTED.Name放入表变量的示例,但我无法将其转换为非表变量.
我试过了OUPUT INSERTED.Id AS @var,SET @var = INSERTED.Id但都没有奏效.
我在表格中插入了一些值.有一列其值是自动生成的.在我的代码的下一个语句中,我想要检索此值.
你能告诉我怎么做正确的方法吗?
我执行UPDATE与OUTPUT查询:
UPDATE BatchReports
SET IsProcessed = 1
OUTPUT inserted.BatchFileXml, inserted.ResponseFileXml, deleted.ProcessedDate
WHERE BatchReports.BatchReportGUID = @someGuid
Run Code Online (Sandbox Code Playgroud)
这句话很好,很好; 直到在表上定义了一个触发器.然后我的UPDATE陈述将得到错误334:
如果语句包含没有INTO子句的OUTPUT子句,则DML语句的目标表'BatchReports'不能具有任何已启用的触发器
现在,SQL Server团队在博客文章中解释了这个问题:
错误消息是不言自明的
他们还提供解决方案:
该应用程序已更改为使用INTO子句
除了我无法做出整篇博文的正面或反面.
所以让我问一下我的问题:我应该改变什么UPDATE才能使它有效?
在使用存储过程的SQL Server中是否可以在表中返回一些值插入的表中的标识列值?例如,如果我们在表中插入数据,则使用存储过程:
表TBL
因此,如果我运行存储过程插入一些值,如:
Insert into TBL (Name, UserName, Password)
Values ('example', 'example', '$2a$12$00WFrz3dOfLaIgpTYRJ9CeuB6VicjLGhLset8WtFrzvtpRekcP1lq')
Run Code Online (Sandbox Code Playgroud)
如何返回UserID此插入的值.我需要UserID的值用于其他一些操作,任何人都可以解决这个问题吗?
在SQL Server 2005中,我在表中的"id"字段中将"Is Identity"属性设置为"Yes".因此,当在该表上执行Insert时,"id"将自动设置为下一个递增整数.执行Insert是否有一种简单的方法来获取"id"的设置,而不必在Insert之后立即执行Select语句?
重复:
获取插入行的标识的最佳方法?
关于相关领域部分的简要说明:
类别由四个数据组成:
因此,Male Adult Black Rooster形成一个类别.可能不存在某些组合,例如强大的螨黑带.
一名运动员与同一类别的运动员作战,如果他分类,他会与不同重量级别的运动员作战(但性别,年龄和腰带相同).
去建模.我有一个Category表,已经填充了域中存在的所有组合.
CREATE TABLE Category (
[Id] [int] IDENTITY(1,1) NOT NULL,
[AgeDivision_Id] [int] NULL,
[Gender] [int] NULL,
[BeltColor] [int] NULL,
[WeightDivision] [int] NULL
)
Run Code Online (Sandbox Code Playgroud)
A CategorySet和a CategorySet_Category,形成多对多的关系Category.
CREATE TABLE CategorySet (
[Id] [int] IDENTITY(1,1) NOT NULL,
[Championship_Id] [int] NOT NULL,
)
CREATE TABLE CategorySet_Category (
[CategorySet_Id] [int] NOT NULL,
[Category_Id] [int] NOT NULL
)
Run Code Online (Sandbox Code Playgroud)
给定以下结果集:
| Options_Id | Championship_Id | AgeDivision_Id | …Run Code Online (Sandbox Code Playgroud) 我已经阅读了有关获取插入行的标识的问题.我的问题有点相关.
有没有办法获得插入行的guid?我正在使用的表有一个guid作为主键(默认为newid),我想在插入行后检索该guid.
有没有像什么@@IDENTITY,IDENT_CURRENT或者SCOPE_IDENTITY对的GUID?
可能重复:
获取插入行标识的最佳方法是什么?
什么时候适当,有人应该如何IDENTITY在T-SQL中使用不同的关键词?