尝试创建具有2个插入的存储过程
本文关键字:插入 存储过程 2个 创建 | 更新日期: 2023-09-27 18:15:40
我对存储过程非常陌生。我正在尝试创建一个存储过程,将记录插入到两个不同的表中,但是我遇到了问题。
我正在用c#编程,并使用。net连接器连接MySQL。
我有两个表,prop_details
和prop_account
。prop_details
表有一个自增列(id), prop_account
表有一个匹配prop_details.id
的外键prop_id
。
下面的伪代码解释了存储过程应该做什么:
insert form elements into table prop_details
insert relationship of prop_details.id into table prop_account
下面是我尝试创建的存储过程
DROP PROCEDURE IF EXISTS `InsertPropertybyClientID`;
CREATE DEFINER = `root`@`localhost` PROCEDURE `InsertPropertybyClientID`(IN 'in_account' int(11), IN `in_title` varchar(100), IN 'in_type' int(2), IN 'in_active' tinyint(1), IN 'in_created' datetime)
BEGIN
INSERT INTO prop_details
(prop_title, prop_type, prop_active)
VALUES
(in_title, in_type, in_active, in_created);
INSERT INTO prop_account
(prop_id, acnt_id)
VALUES
(LAST_INSERT_ID(), in_account);
END;
当尝试保存存储过程时,我得到这个错误
1064 -你有一个错误的SQL语法;检查与你的MySQL服务器版本对应的手册,以便在"'in_account' int(11), 'in_title' varchar(100), 'in_type' int(2), 'in_ac' at line 1"附近使用正确的语法
我做错了什么?
实际上错误细节表达了错误:
IN 'in_account' int(11), IN 'in_title' varchar(100), IN 'in_type' int(2), IN 'in_ac' at line 1
在MySQL关于标识符的参考文档中,它声明:
标识符引号字符是反打号(" ' "):
和
如果启用了ANSI_QUOTES SQL模式,还允许在双引号内引用标识符:
这意味着除非启用ANSI_QUOTES
SQL模式,否则不应该使用单引号或双引号来表示标识符。您可以使用backtick('),也可以省略backtick(如果您使用的单词不是保留词)。