具有特定名称的sql中的自动增量

时间:2014-09-18 06:05:27

标签: mysql sql

我需要自动增量。像abc_1,abc_2一样开始。喜欢这种格式?下面显示的代码用于自动增量。但是我需要像abc_这样的格式是constatanct然后自动增量,格式如abc_1,abc_2 ..

CODE

sql = "CREATE TABLE MY_TABLE
(
  table_id int NOT NULL AUTO_INCREMENT, 
  PRIMARY KEY(table_id),
  table_1 varchar(45),
  table_2 varchar(45),
  table_3 varchar(999),
  table_4 varchar(45)
 )"

3 个答案:

答案 0 :(得分:0)

您可以添加另一列来派生此值,然后使用触发器自动更新此列,以便在插入行时添加派生值。

然而,目前尚不清楚为何需要这样做。最好只存储数字并导出需要使用该值的abc_123形式。

答案 1 :(得分:0)

这是一件有趣的事情。所以我谷歌搜索自定义自动增量结构,并找到一些链接。大多数人都说在插入之前使用触发器会更好,我认为它可以解决您的问题。请看以下链接。

http://www.experts-exchange.com/Database/MySQL/Q_27602627.html

答案 2 :(得分:0)

您有两个选项 - 两者都包括完全保持自动增量字段。

第一个选项是添加一个简短的字符类型字段,它只存储您的Alpha部分。如果要检索整个密钥,则可以SELECT (alpha_part + table_id) as ID。正如您所看到的,这会产生较小的存储空间,但每个select语句需要更多的工作。

第二个选项是添加一个由插入触发器正常填充的较长列。它只是在创建时存储连接,然后您不必在选择它时将其连接起来。此选项还允许您更轻松地创建索引或聚簇索引。

CREATE TABLE MY_TABLE ( 
table_id int NOT NULL AUTO_INCREMENT, PRIMARY KEY(table_id), 
alpha_part varchar(10) NOT NULL,   -- This 
display_id varchar(40) NOT NULL,   -- OR This (not both)
table_1 varchar(45), 
table_2 varchar(45), 
table_3 varchar(999), 
table_4 varchar(45) )

“数据库ID”和“保险政策ID”是两个独立的实体 - 它们可能包含“相同”的数字,但不会混淆数据库需要有效执行的内容,以及业务应用程序生成ID所需的内容为客户。业务规则和数据库ID是单独的实体。您可以从生成的数据库中“生成”策略ID,但如果某些内容更改了策略ID(是的,则会发生这种情况),您的数据库突然需要重构,并且您不希望这种情况发生。