自动增量SQL Server 2008中的自定义数据类型

时间:2017-03-30 10:14:16

标签: sql sql-server sql-server-2008

我正在使用一个我无法访问其代码的程序,但我可以访问SQLServer 2008中的数据库。

我正在开发另一个与该数据库交互的程序,但是,尝试插入一个空id的行,使其显示为自动递增,由于默认值,它在第二次尝试时抛出一个错误((0) )。

我找到了几个表,其主键是一个名为“Autonumeric”的用户定义数据类型。

数据类型的定义是:

CREATE TYPE [dbo].[AutoNumerico] FROM [int] NOT NULL Custom field

使用Original程序插入时,此字段自动增加,但它没有Identity属性。

主键的创建是:

CREATE TABLE [dbo].[tbTableName]( [IDEstrComp] [dbo].[AutoNumerico] NOT NULL, ... CONSTRAINT [PK_tbTableName] PRIMARY KEY CLUSTERED ( [IDEstrComp] ASC )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] ) ON [PRIMARY] Primary key

这是否意味着密钥是在程序中生成的?

有没有理由在程序中增加而不是在数据库中使用自动增量字段?

1 个答案:

答案 0 :(得分:0)

我找到了一个插入辅助表的存储过程,删除插入的行并返回生成的@@ IDENTITY

ALTER PROCEDURE [dbo].[spValorAutonumerico]
(
    @Value INT output
)
AS

BEGIN

    INSERT INTO  xAutoNumeric
    (Valor)
    VALUES
    (0)

    SET @Valor = @@IDENTITY

    DELETE FROM xAutoNumeric
    WHERE ID = @Valor
END