如何创建accounting表插入触发器,从enclosure表获取time字段值
解决方案
表结构
enclosure ---- id time label accounting --- id enclosure_id time
插入触发器代码
需要创建BEFORE INSERT类型的触发器,在accounting表插入数据前,从enclosure表获取对应time值并填充到新记录中:
CREATE TRIGGER `accounting-before_insert-time` BEFORE INSERT ON `accounting` FOR EACH ROW BEGIN -- 根据插入的enclosure_id匹配enclosure表的id,获取对应time值赋值给新记录的time字段 SELECT time INTO NEW.time FROM enclosure WHERE id = NEW.enclosure_id; END
逻辑说明
- 选用
BEFORE INSERT触发器:能在数据正式写入accounting表前修改待插入记录的time字段,确保插入后的数据直接带有正确值 SELECT ... INTO NEW.time:直接将enclosure表中匹配id的time值赋值给要插入的accounting记录的time字段- 补充提示:如果插入的
enclosure_id在enclosure表中不存在,NEW.time会被设为NULL,可根据业务需求添加额外判断(比如抛出错误或设置默认值)
内容的提问来源于stack exchange,提问作者clarkk
相关产品推荐
相关产品推荐

