【问题标题】:Identity increment for char c#char c#的标识增量
【发布时间】:2017-09-05 01:44:30
【问题描述】:

当我发现这个问题时,我在互联网上找不到任何相同的问题,尤其是在这个网站上。

我真的知道,整数数据类型与 char 数据类型确实不同。 当我使用整数作为 id 时,此 id 可以从表格下方的设置中自动递增 -> Link for description。另一方面,当我使用 char 数据类型时,它不能这样做。 -> link for description.

除了增量问题(我必须使用这个char的原因),数据必须包含2个字符和3个数字(例如:LA002)但是id必须自动生成并且对于数字示例LA001逐渐上升, LA002,洛杉矶...,兰恩。

任何代码的答案或我如何自动设置它们都可以帮助我解决这个问题。之前感谢您的帮助。

【问题讨论】:

  • 我认为您可以使用composite key,它是auto-increment id 和字符串的组合(在您的情况下:LA)
  • 您发布了两张关于数据库的图片,但您没有包含任何 sql 标签。你甚至没有指定这个自动增量是应该在 SQL 端还是 C# 端完成。
  • @kienct89 我必须为“复合键”问题编写代码,而它必须是自动完成语法吗?
  • @xanatos: 对此我很抱歉.. 但据我所知,这个问题应该由 c# 完成.. 感谢您的建议..
  • 由于您没有在问题中提及任何技术细节,我假设您使用的是带有 MSSQL 的 EF Core (stackoverflow.com/questions/36155429/…)

标签: c# sql sql-server auto-increment


【解决方案1】:

您可以将自定义主键与自动增量标识列结合使用:

CREATE TABLE AutoIncrementCustomIDTable
(
    MyKey AS ('LA' + LEFT('000', 3 - LEN(AutoIncId)) + CONVERT(varchar(3), AutoIncId)) PERSISTED NOT NULL PRIMARY KEY,    
    AutoIncId INT IDENTITY NOT NULL,
    Col1 VARCHAR(10)
);


INSERT INTO AutoIncrementCustomIDTable (Col1) VALUES ('111')
INSERT INTO AutoIncrementCustomIDTable (Col1) VALUES ('222')
INSERT INTO AutoIncrementCustomIDTable (Col1) VALUES ('333')

SELECT * FROM AutoIncrementCustomIDTable 

【讨论】:

    【解决方案2】:

    您可以使用两列 一列包含默认的 'LA' 前缀和第二个 COLUMN 用于自动增量 id,两者都针对主键分组。

    创建表( id INT NOT NULL AUTO_INCREMENT, 前缀 CHAR(30) NOT NULL DEFAULT 'LA', 主键(id,前缀))

    【讨论】:

      猜你喜欢
      • 2011-06-02
      • 2020-12-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-04-18
      • 1970-01-01
      相关资源
      最近更新 更多