Sql server 如何使模型字段在sql server 2017的起始值1990中自动递增,并使用存储的procedure递增1

Sql server 如何使模型字段在sql server 2017的起始值1990中自动递增,并使用存储的procedure递增1,sql-server,Sql Server,您尚未指定模型列是否已定义为标识列,但如果已指定,则可以使用DBCC CHECKIDENT更改此表上标识列的种子值,在您的情况下: CREATE PROCEDURE [dbo].[InsertBMW] (@Make varchar(50) ,@Model int out ,@Location varchar(50) ,@Km int, @Color varchar(50) ,@Location

您尚未指定模型列是否已定义为标识列,但如果已指定,则可以使用DBCC CHECKIDENT更改此表上标识列的种子值,在您的情况下:

CREATE PROCEDURE [dbo].[InsertBMW] 

        (@Make varchar(50)  
        ,@Model int out 
        ,@Location varchar(50)  
        ,@Km int, @Color varchar(50)    
        ,@Location varchar(50)  
        ,@Value int )
 AS 
BEGIN   
INSERT INTO [dbo].[VehicleInfo] Make,Model,Km,Color,Location,Value  
VALUES(@Make,@Model,@Location,@Km,@Color,@Location,@Value
随后的插入将从1990年开始使用id值

从:

种子值是插入到表中加载的第一行的标识列中的值。所有后续行都包含当前标识值加上增量值,其中当前标识值是为表或视图生成的最后一个标识值


如果我正确理解你的问题,你可以尝试以下解决方案。 您的模型列是varchar50,我猜,这列中的值是数字。因此,您需要从该列中读取最大值 并进行额外计算

DBCC CHECKIDENT ('dbo.VehicleInfo', SEED, 1989)

你到底在问什么?您发布了一些SAL,但没有上下文,也没有预期的结果/行为。你能通过编辑来扩展你的问题吗?你能添加你的表定义吗?请允许这个创建表[dbo].[table][VehicleID]INT NOT NULL主键,[Make]NVARCHAR50 NOT NULL,[Model]NVARCHAR50 NOT NULL,[Km]INT NOT NULL,[Color]NVARCHAR50 NOT NULL,[Location]nvarcharchar50 NOT NULL,[Value]INT NOT NULL“Model”字段中的当前值是什么?我是SQL server新手。模型不是主键。请帮助。标识与主键不同。虽然它们经常一起使用,但列可以定义为标识列,而不是主键
CREATE PROCEDURE [dbo].[InsertBMW] (
    @Make varchar(50),
    @Model int OUTPUT,
    @Location varchar(50),
    @Km int, 
    @Color varchar(50),
    @Location varchar(50),
    @Value int
)
AS 
BEGIN
    -- Get current Model value
    SELECT @Model = ISNULL(MAX(CONVERT(int, Model), 0)
    FROM [dbo].[VehicleInfo]

    -- Set new Model value
    IF @Model < 1990 SET @Model = 1990
    ELSE SET @Model = @Model + 1

    -- Insert values
    INSERT INTO [dbo].[VehicleInfo] 
        (Make, Model, Km, Color, Location, Value)  
    VALUES 
        (@Make, @Model, @Location, @Km, @Color, @Location, @Value)
END