相关疑难解决方法(0)

SQL Server - INSERT后的返回值

我试图在INSERT声明后得到一个键值.示例:我有一个包含属性name和id的表.id是生成的值.

    INSERT INTO table (name) VALUES('bob');
Run Code Online (Sandbox Code Playgroud)

现在我想在同一步骤中恢复身份.这是怎么做到的?

我们正在使用Microsoft SQL Server 2008.

sql sql-server sql-server-2008

279
推荐指数
8
解决办法
48万
查看次数

什么是最常见的SQL反模式?

我们所有使用关系数据库的人都已经学习(或正在学习)SQL是不同的.引出期望的结果,并且有效地进行,涉及一个繁琐的过程,其部分特征是学习不熟悉的范例,并发现我们最熟悉的一些编程模式在这里不起作用.您见过(或自己承诺)的常见反模式有哪些?

sql anti-patterns

226
推荐指数
28
解决办法
7万
查看次数

如何使用INSERT语句的OUTPUT子句获取标识值?

如果我有一个插入语句,例如:

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但都没有奏效.

sql sql-server-2005 insert

220
推荐指数
1
解决办法
26万
查看次数

SQL:如何获取我刚刚插入的值的id?

我在表格中插入了一些值.有一列其值是自动生成的.在我的代码的下一个语句中,我想要检索此值.

你能告诉我怎么做正确的方法吗?

sql-server

75
推荐指数
7
解决办法
11万
查看次数

当触发器在表上时,不能将UPDATE与OUTPUT子句一起使用

我执行UPDATEOUTPUT查询:

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 sql-server sql-server-2008-r2

59
推荐指数
2
解决办法
4万
查看次数

Sql Server在insert语句后返回identity列的值

在使用存储过程的SQL Server中是否可以在表中返回一些值插入的表中的标识列值?例如,如果我们在表中插入数据,则使用存储过程:

表TBL

  • UserID整数,标识,自动递增
  • 名称varchar
  • UserName varchar
  • 密码varchar

因此,如果我运行存储过程插入一些值,如:

 Insert into TBL (Name, UserName, Password)
 Values ('example', 'example', '$2a$12$00WFrz3dOfLaIgpTYRJ9CeuB6VicjLGhLset8WtFrzvtpRekcP1lq')
Run Code Online (Sandbox Code Playgroud)

如何返回UserID此插入的值.我需要UserID的值用于其他一些操作,任何人都可以解决这个问题吗?

sql sql-server-2008

32
推荐指数
4
解决办法
15万
查看次数

在SQL Server中,执行Insert时是否可以获取记录的"id"?

在SQL Server 2005中,我在表中的"id"字段中将"Is Identity"属性设置为"Yes".因此,当在该表上执行Insert时,"id"将自动设置为下一个递增整数.执行Insert是否有一种简单的方法来获取"id"的设置,而不必在Insert之后立即执行Select语句?

重复:
获取插入行的标识的最佳方法?

sql-server identity

12
推荐指数
2
解决办法
4万
查看次数

插入多个表格

关于相关领域部分的简要说明:

类别由四个数据组成:

  1. 性别(男/女)
  2. 年龄科(强大的螨对大师)
  3. 皮带颜色(白色到黑色)
  4. 重量师(公鸡到重型)

因此,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)

sql sql-server sql-server-2014

11
推荐指数
1
解决办法
1977
查看次数

获取插入行的PK Guid的最佳方法

我已经阅读了有关获取插入行的标识的问题.我的问题有点相关.

有没有办法获得插入行的guid?我正在使用的表有一个guid作为主键(默认为newid),我想在插入行后检索该guid.

有没有像什么@@IDENTITY,IDENT_CURRENT或者SCOPE_IDENTITY对的GUID?

sql-server identity sql-server-2005 insert uniqueidentifier

10
推荐指数
1
解决办法
1万
查看次数

在TSQL中适当使用`IDENTITY`

可能重复:
获取插入行标识的最佳方法是什么?

什么时候适当,有人应该如何IDENTITY在T-SQL中使用不同的关键词?

  • SELECT @@ IDENTITY,
  • SELECT SCOPE_IDENTITY()
  • SELECT IDENT_CURRENT('tablename')

sql t-sql syntax identity

7
推荐指数
1
解决办法
701
查看次数