gpt4 book ai didi

mysql - 如果mysql中不存在则创建插入

转载 作者:行者123 更新时间:2023-11-29 12:47:23 25 4
gpt4 key购买 nike

在MySql中,我们可以选择INSERT IGNORE(不更新现有)来生成带有查询CREATE TABLE IF NOT EXISTSINSERT IGNORE INTO<的sql文件.

但在这种情况下,如果表存在,则“INSERT IGNORE INTO”将再次插入数据。 我想问一下,有没有一种方法,可以实现这样的功能:如果表不存在,则创建表并插入数据。

如果表存在,则不会插入数据。

其实我已经尝试过如何实现,我知道用存储过程是可以的,但是用批处理文件执行的sql文件,如何实现该功能?

我当前的代码是这样的

CREATE DATABASE IF NOT EXISTS martintest;

USE martintest;
CREATE TABLE IF NOT EXISTS `martin1` (
`col1` int(11) default NULL,
`col2` text
) ENGINE=MyISAM DEFAULT CHARSET=utf8;

INSERT IGNORE INTO `martin1` (`col1`, `col2`) VALUES (2, 'bbb'), (1, 'aaa');

最佳答案

一个选项,也许不推荐(必须小心 session 变量,在本例中,使用:@`table_exists?`),但最后的一个选项类似于:

/* CODE FOR DEMONSTRATION PURPOSES */

USE `martintest`;

SET @`table_schema` := 'martintest', @`table_name` := 'martin1';

SELECT EXISTS
(
SELECT NULL
FROM `information_schema`.`TABLES` `ist`
WHERE `ist`.`TABLE_SCHEMA` = @`table_schema` AND `ist`.`TABLE_NAME` = @`table_name`
)
INTO @`table_exists?`;

CREATE TABLE IF NOT EXISTS `martin1` (
`col1` int(11) DEFAULT NULL,
`col2` text
) ENGINE=MyISAM DEFAULT CHARSET=utf8;

INSERT INTO `martin1` SELECT 2, 'bbb' FROM DUAL WHERE 0 = @`table_exists?`;
INSERT INTO `martin1` SELECT 1, 'aaa' FROM DUAL WHERE 0 = @`table_exists?`;

/* CODE FOR DEMONSTRATION PURPOSES */

关于mysql - 如果mysql中不存在则创建插入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25264072/

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