存储过程选择最大值并插入

时间:2013-02-24 14:37:22

标签: sql-server tsql stored-procedures

我试图从表中选择max:value并将值插入到同一个表中。

代码是:

CREATE PROCEDURE [dbo].[InsertLogin]
    @LOG_ID INT OUTPUT,
    @LOG_NAME VARCHAR(100),
    @LOG_EMAIL VARCHAR(100)
AS
    INSERT INTO login(LOG_NAME, LOG_EMAIL) 
    VALUES(@LOG_NAME, @LOG_EMAIL)

    SET @LOG_ID = @@IDENTITY

除了LOG_ID之外,其他值正在插入,它变为空。

1 个答案:

答案 0 :(得分:1)

我的猜测是您的Login表中的Log_Id列未设置为Identity。

通过T-SQL,您必须删除并读取列:

alter table login
drop column log_id

alter table login
alter column log_id int not null Identity(1,1)

或者,您可以在SSMS中轻松完成此操作。这是关于这个主题的一篇不错的文章:

http://blog.sqlauthority.com/2009/05/03/sql-server-add-or-remove-identity-property-on-column/

我还建议您使用SCOPE_IDENTITY()而不是@@Identity