gpt4 book ai didi

mysql - 如果表存在则执行某些操作

转载 作者:行者123 更新时间:2023-11-29 16:48:20 25 4
gpt4 key购买 nike

我正在尝试查找是否有一个名为 OOK 的表,如果有,请对其执行某些操作。这是我到目前为止所拥有的,它不适用于有用的 ERROR 1064 [...] 语法错误 消息:

IF show tables like 'OOK' THEN
DELETE FROM OOK WHERE Id = 'Development';
INSERT INTO OOK VALUES ( 'Development', 'Localhost' );
END IF

这是为了支持一些遗留代码,可能不是问题的最佳解决方案。但是,它会根据我的需要修复它。

由于我在答案中遇到很多语法错误,因此这是我的确切版本:服务器版本:5.5.60-MariaDB MariaDB Server

最佳答案

您可以访问Information Schema ,检查表是否存在。此外,您还需要使用 Dynamic SQL (处理表名不存在的情况)

尝试如下所示:

IF EXISTS (SELECT 1
FROM information_schema.tables
WHERE table_schema = 'your_database_name'
AND table_name = 'OOK') THEN

SET @s1 = 'DELETE FROM your_database_name.OOK WHERE Id = ?';
SET @a = 'Development';
PREPARE stmt1 FROM @s1;
EXECUTE stmt1 USING @a;
DEALLOCATE PREPARE stmt1;

SET @s2 = 'INSERT INTO your_database_name.OOK VALUES (?, ?)';
SET @b = 'Development';
SET @c = 'Localhost';
PREPARE stmt2 FROM @s2;
EXECUTE stmt1 USING @b, @c;
DEALLOCATE PREPARE stmt2;

END IF

关于mysql - 如果表存在则执行某些操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52971999/

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