当没有明确给定新值时,让字段取另一个字段的值


Have field take value of another field when not explicitly given new value

我有一个格式如下的表:

 id | ....... | other_id
-------------------------
  1 | ....... |    5     
  2 | ....... |    2

基本上,当提交表单时,有时表单中会有一个other_id的值,新行的插入也会正常进行。但是,如果没有为other_id给定值,我希望它的值来自id。问题是id是自动递增的id,因此id的实际值在实际插入表之前是未知的。

有没有一种方法可以用SQL本身动态地做到这一点,而不必在之后运行额外的查询?

您可以使用插入触发器:

CREATE TRIGGER foo AFTER INSERT ON TABLENAME FOR EACH ROW
IF NEW.other_id IS NULL THEN
   SET NEW.other_id := NEW.id;
END IF;;

@jh314几乎是对的。只需将AFTER INSERT更改为BEFORE INSERT