-5

我不明白@@Identity。这到底是做什么的?我的表的身份规范设置为是,身份增量设置为 1。我正在查看数据库程序员的代码,发现以下内容:

DECLARE @CustomerID int,
    INSERT INTO Customers
    (Name, Login, Password, IsActive,)
    VALUES('University', NULL, NULL, 1,)
    SET @CustomerID = @@IDENTITY

但在插入后的其他地方,她并没有包括@@IDENTITY. 例如:在相同的代码中,她有:

INSERT INTO Meters
(Name, Type, SiteID, CustomerAccountID)
SELECT Sites.Name + ' ' + Type, ID, ID, NULL
FROM Sites
CROSS JOIN MeterTypes
WHERE ProjectID = @ProjectID
AND tblMEP_MeterTypes.ID IN(1, 3, 13)

谁能告诉我什么时候使用@@IDENTITY?我认为它应该在每个插入语句的末尾。顺便说一下,上面的表(客户)有一个名为 ID 的列,它是一个主键字段,不能为 Null!这如何有效?不应该是这样的:

DECLARE @CustomerID int,
    INSERT INTO Customers
    (ID, Name, Login, Password, IsActive,)
    VALUES(1, 'University', NULL, NULL, 1,)
    SET @CustomerID = @@IDENTITY
4

1 回答 1

2

可能是因为在第二个代码块中,她并不关心生成了什么 IDENTITY 值。也许在第一个代码示例中,它被用于返回客户端或随后插入相关表中。

忘记@@IDENTITY。SCOPE_IDENTITY() 更安全,OUTPUT 子句也很有用。

于 2013-07-30T00:26:15.413 回答