如果mysql中不存在,则显示语法错误
我正在尝试将这个tsql转换为mysql,但是显示错误需要帮助如果mysql中不存在,则显示语法错误,mysql,tsql,Mysql,Tsql,我正在尝试将这个tsql转换为mysql,但是显示错误需要帮助 CREATE PROCEDURE FormAdd @formName varchar(MAX) AS IF NOT EXISTS(SELECT * FROM tbl_Form WHERE formName=@formName) BEGIN INSERT INTO tbl_Form (formName) VALUES (@formName) SELECT @
CREATE PROCEDURE FormAdd
@formName varchar(MAX)
AS
IF NOT EXISTS(SELECT * FROM tbl_Form WHERE formName=@formName)
BEGIN
INSERT INTO tbl_Form
(formName)
VALUES
(@formName)
SELECT @@identity
END
ELSE
BEGIN
SELECT '-1'
END
mysql
您的尝试在语法上无效,因为从逻辑上讲,INSERT语句不能包含WHERE子句,因为它不作用于现有行 如果目的是仅在p_formname的值不存在时插入,则适当的步骤是首先在该列上定义唯一索引。然后,构造您的过程以尝试插入并检查是否插入了一个,并相应地执行操作,如果不调整现有的T-SQL过程,则返回-1 首先在p_formname上创建唯一索引: 然后,您的过程应该使用来尝试插入该行。根据文档,如果未插入新行,则ROW_COUNT的值为0,如果插入新行,则为1
CREATE PROCEDURE FormAdd (p_formName varchar(500))
BEGIN
/* Attempt the insert, overwrite with the same value if necessary */
INSERT INTO tbl_Form (formName) VALUES (p_formName) ON DUPLICATE KEY UPDATE formName = p_formName;
/* Return the LAST_INSERT_ID() for a new row and -1 otherwise */
SELECT
CASE
WHEN ROW_COUNT() = 1 THEN LAST_INSERT_ID()
ELSE -1
END AS returnValue;
END
您到底遇到了什么错误?INSERT INTO逻辑上没有WHERE子句。这就是您的错误所在吗?如果p_formname不存在,那么在tbl_表单中插入新行是正确的吗?yeah@MichaelBerkowski上面是mssql。。我正在尝试将其转换为mysql
ALTER TABLE tbl_Form ADD UNIQUE KEY `idx_formName` (`formName`);
CREATE PROCEDURE FormAdd (p_formName varchar(500))
BEGIN
/* Attempt the insert, overwrite with the same value if necessary */
INSERT INTO tbl_Form (formName) VALUES (p_formName) ON DUPLICATE KEY UPDATE formName = p_formName;
/* Return the LAST_INSERT_ID() for a new row and -1 otherwise */
SELECT
CASE
WHEN ROW_COUNT() = 1 THEN LAST_INSERT_ID()
ELSE -1
END AS returnValue;
END