Sql server 如何使模型字段在sql server 2017的起始值1990中自动递增,并使用存储的procedure递增1
您尚未指定模型列是否已定义为标识列,但如果已指定,则可以使用DBCC CHECKIDENT更改此表上标识列的种子值,在您的情况下: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
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