我正在调用一个存储过程,该存储过程将插入新行,但是如果存在唯一名称,则只需更新分子并应返回更新后的ID。
10^6
第二次尝试插入相同值后,分子将更新。 “测试”表获取预期的更新主题ID, 但是我在Python端的out参数没有受到影响:
CREATE PROCEDURE bear_crm.insert_subject(in_subject_name varchar(100), OUT out_subject_id int)
BEGIN
DECLARE t_update_id int;
set t_update_id := 0;
INSERT INTO t_subject (subject_name) VALUES (in_subject_name) ON DUPLICATE KEY
UPDATE pop_index = COALESCE(pop_index,0)+1, subject_id=LAST_INSERT_ID(subject_id);
set out_subject_id := LAST_INSERT_ID();
insert into testing(aa) values(out_subject_id); # just a test to see values
END//
v_id = -999
v_args = ['test subject', v_id]
mycursor.callproc('insert_subject', v_args)
print('id is:', v_args[1])
仍为-999