MySQLでトリガーを作成する際に問題が発生しました。私の "tb_pessoa"テーブルはユーザーのデータを保存します。私は、新しい挿入が行われたときに、 "tb_email"テーブルにユーザーの電子メールを格納して、それがすでに存在するかどうかをチェックしますが、カーソルでクエリを実行するとき、カーソルは開かれていないと言います。それは何でしょうか?トリガーエラー1326 MySQL
CREATE DEFINER=`root`@`localhost` TRIGGER `db_agenda`.`tb_pessoa_AFTER_INSERT` AFTER INSERT ON `tb_pessoa` FOR EACH ROW
BEGIN
declare id_email, id_tipo_email int(11);
declare nm_email varchar(100);
declare cr_email cursor for
select id_email, nm_email, id_tipo_email
from tb_email
where nm_email like new.nm_email;
declare continue handler for sqlstate '02000'
open cr_email;
lp_email: loop
fetch cr_email into id_email, nm_email, id_tipo_email;
if (id_email = null) then
insert into tb_email set
id_email = (select max(id_email)+1 from tb_email),
nm_email = nm_email,
id_tipo_email = 1;
close cr_email;
leave lp_email;
end if;
end loop lp_email;
close cr_email;
END
'id_email'は自動インクリメント列ですか? – Barmar
いいえ、サブクエリのmax(id_email)+1で挿入されました –
なぜauto_incrementに変更しないのですか?それが自動的に実行されます。 – Barmar