gpt4 book ai didi

SQL 服务器 : auto-generated custom format sequence number

转载 作者:行者123 更新时间:2023-12-01 10:32:59 25 4
gpt4 key购买 nike

我正在使用 Microsoft SQL Server 2014。在我们的要求中,包括自定义格式的序列号。

序号格式为CAT-YYYY-MM-NNNNNN。示例数据:

CAT-2016-10-000001
CAT-2016-10-000002
.
.
.
CAT-2016-10-999999

我不想使用 GUID 或任何其他,我想使用过程或函数。

所以,我正在尝试这样做:

CREATE TABLE [category]
(
[id] int NOT NULL UNIQUE IDENTITY,
[category_no] nvarchar(20) NOT NULL,
[category_name] nvarchar(50) NOT NULL,
PRIMARY KEY ([id])
);

CREATE FUNCTION generate_category_no()
RETURNS CHAR(20)
AS
BEGIN
DECLARE @category_no CHAR(20)
SET @category_no = (SELECT MAX(category_no) FROM category)

IF @category_no IS NULL
SET @category_no = 'CAT-' + YEAR(getDate()) + '-' + MONTH(getDate()) + '-000001'

DECLARE @no int
SET @no = RIGHT(@category_no,6) + 1

RETURN 'CAT-' + YEAR(getDate()) + '-' + MONTH(getDate()) + '-' + right('00000' + CONVERT(VARCHAR(10),@no),6)
END
GO

ALTER TABLE category DROP COLUMN category_no;
ALTER TABLE category ADD category_no AS dbo.generate_category_no();

INSERT INTO category (category_name)
VALUES ('BMW'), ('JAGUAR');

当我一步一步运行上面的SQL时,就OK了。它没有显示错误。但是当我运行以下命令时:

SELECT * FROM category;

它显示以下错误:

Msg 217, Level 16, State 1, Line 1
Maximum stored procedure, function, trigger, or view nesting level exceeded (limit 32).

我不知道如何解决这个问题。甚至我都不知道我的功能是否有效。我从互联网上引用了此功能。

已添加

我每个月都需要重新设置序号。例如。下个月,不应该如下:

CAT-2016-11-000001

请赐教。提前致谢!

最佳答案

如下修改你的函数

ALTER TABLE category DROP COLUMN category_no;

alter FUNCTION dbo.generate_category_no( @id int)
RETURNS CHAR(20)
AS
BEGIN

RETURN 'CAT-' + cast(YEAR(getDate()) as varchar(10)) + '-' + cast(MONTH(getDate()) as varchar(10))+ '-' + right('00000' + CONVERT(VARCHAR(10),@id),6)
END



ALTER TABLE category ADD category_no AS dbo.generate_category_no(id);

INSERT INTO category
(category_name)
VALUES
('BMW13'),
('JAGUAR');

SELECT * FROM category 将给出以下结果。

1   BMW     CAT-2016-10-000001  
2 JAGUAR CAT-2016-10-000002
3 BMW1 CAT-2016-10-000003
4 BMW13 CAT-2016-10-000004

关于SQL 服务器 : auto-generated custom format sequence number,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40175635/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com