gpt4 book ai didi

MySQL - 插入信息后更新列

转载 作者:行者123 更新时间:2023-11-30 22:23:24 25 4
gpt4 key购买 nike

我在 MySql 表中有一个表,如下所示

row_timestamp timestamp
, row_id int(11) auto_increment
, mrn char(17)
, patients_last_name varchar(50)
, patients_first_name varchar(50)
, ssn char(4) default '0000'
, visit_key NULL

插入记录后,我想将 visit_key 设置为 visit_key = concat(mrn, row_id) 我试图通过插入前触发器来完成此操作但无济于事,我不断得到 mrn 列不在字段选择列表中。

更新

我尝试了以下方法,但似乎不起作用,因为 auto_increment 尚未递增:

set new.visit_key = concat(new.mrn, new.row_id)

我也试过

set new.visit_key = concat(new.mrn, max(row_id)+1)

我正在考虑将触发器用作 MS Access 中的计算字段,这合理吗?想法?由于 visit_key 在技术上是 NULL 并且您无法更新新值,所以这样做是不可能的吗?

更新

我使用了从这个问题 here 改编的以下代码

DELIMITER //
CREATE TRIGGER vkt AFTER INSERT ON demographic_information
FOR EACH ROW
BEGIN
UPDATE `demographic_information` SET visit_key_test = concat(new.mrn, mew.row_id) WHERE row_id = NEW.row_id;
END;
//
DELIMITER ;

并得到以下错误信息:

INSERT INTO  `manchuco_nys_trauma`.`demographic_information` (

`row_timestamp` ,
`row_id` ,
`mrn` ,
`patients_last_name` ,
`patients_first_name` ,
`ssn` ,
`visit_id` ,
`visit_key_test`
)
VALUES (

CURRENT_TIMESTAMP , NULL , '123456', 'Sanderson', 'Steven', '1234', '12345670', NULL
)
MySQL said: Documentation

#1442 - Can't update table 'demographic_information' in stored function/trigger because it is already used by statement which invoked this stored function/trigger.

谢谢,

最佳答案

您观察到的情况似乎很正常:因为您正在使用 BEFORE INSERT,id 值尚不存在。
这同样适用于您对 concat(new.mrn, **new**.row_id) 的尝试:NEW 目前没有任何意义。

所以我建议您改为使用 AFTER INSERT。

关于MySQL - 插入信息后更新列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36050012/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com