我正在使用一个我无法访问其代码的程序,但我可以访问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
这是否意味着密钥是在程序中生成的?
有没有理由在程序中增加而不是在数据库中使用自动增量字段?
答案 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