如果我有以下表结构:
id
name
account_id
account_id将始终为6个字符的字符串以字母X开头,然后用行的增量ID填充。
有没有办法只用1行保存?
我目前正在执行2次保存:1插入名称并生成增量ID,然后另一次获取增量ID,然后保存account_id值。
答案 0 :(得分:1)
如果您使用的是mysql v5.7.6或更高版本,则可以将帐号定义为generated column:
从MySQL 5.7.6开始,CREATE TABLE支持规范 生成的列。生成列的值从a计算 表达式包含在列定义中。
以下简单示例显示了一个存储长度的表 在sidea和sideb列中的右三角形的边,和 计算sidec中斜边的长度(the的平方根) 其他方格的总和):
CREATE TABLE triangle ( sidea DOUBLE, sideb DOUBLE, sidec DOUBLE
AS (SQRT(sidea * sidea + sideb * sideb)) );
INSERT INTO triangle (sidea, sideb) VALUES(1,1),(3,4),(6,8);
在旧版本中,您可以省略表格定义中的帐号,并在表格顶部创建一个即时计算帐号的视图。
答案 1 :(得分:0)
如果我们不想将其包含在业务逻辑中,那么我建议编写AFTER INSERT触发器并在其中实现帐户ID生成。
这是插入触发器的SQL Fiddle example,它将记录插入另一个表中。我们可以写一些类似的东西。