2

我认为这比我的上一个版本更清楚:

我有一个表已经有一个以 1 开头的 PK 字段,该字段已经设置为自动增量。我想添加一个不以 1 开头的新字段,而是以任意数字开头(想想发票编号),并且还会自动递增。显然,每个具有该属性的表只能有一个 col。有没有办法在一个查询操作中强制 MySQL 将该字段的最后一个(或最大值)值增加 1 作为新行中该 col 的值?

更新:我刚刚使用 id 列作为我需要的新值的基础,并删除了非必要的列。我的问题从来没有得到回答,真的,但我确实把它当作重新考虑方法的暗示,所以谢谢!

4

4 回答 4

1

这并不是您特定问题的真正答案(因为您询问如何在一个 SQL 语句中实现您的目标),但您可以通过调用序列生成函数在填充第二列的表上定义一个触发器。这将确保该列的值是真正唯一的(如果您正在执行 max(value) 或类似操作,则情况并非如此),因为对该函数的调用将排队。

或者,如果您确实需要显示相同值的两列,请创建一个使用不同别名两次引用同一列的视图。

于 2009-10-07T20:17:33.410 回答
1

有两列具有相同的值似乎很愚蠢,但是你去吧。

create trigger foo_before_insert 
  before insert on my_table
  for each row set
  new.second_auto_column = first_auto_column
;
于 2009-10-07T20:19:16.980 回答
0

如果它在同一个表中,您可以将您想要的列设置为您的唯一列,但它们将具有相同的值,这似乎毫无意义>您确定需要这个吗?

于 2009-10-07T20:17:47.887 回答
0

如果您能告诉我们该字段的用途,这将更容易回答。通常有更好的方法来实现相同的业务需求。无论你做什么都将是一种黑客行为,你最终会花费大量时间来处理意想不到的后果。

于 2009-10-07T20:19:55.370 回答