gpt4 book ai didi

mysql - 在 MySQL 中使用值插入创建幂等表和索引

转载 作者:行者123 更新时间:2023-11-29 01:50:58 25 4
gpt4 key购买 nike

我尝试将一些 SQL Server 架构更改转换为 MySQL。我知道 MySQL 中的 CREATE TABLE IF NOT EXISTS。我不认为我可以在这里使用它。

我想做的是在 MySQL 中创建一个带有索引的表,然后插入一些值作为“if not exists”谓词的一部分。这是我想出的,尽管它似乎不起作用:

SET @actionRowCount = 0;
SELECT COUNT(*) INTO @actionRowCount
FROM information_schema.tables
WHERE table_name = 'Action'
LIMIT 1;

IF @actionRowCount = 0 THEN
CREATE TABLE Action
(
ActionNbr INT AUTO_INCREMENT,
Description NVARCHAR(256) NOT NULL,
CONSTRAINT PK_Action PRIMARY KEY(ActionNbr)
);

CREATE INDEX IX_Action_Description
ON Action(Description);

INSERT INTO Action
(Description)
VALUES
('Activate'),
('Deactivate'),
('Specified');
END IF

我可以运行它一次,它会创建表、索引和值。如果我第二次运行它,我会得到一个错误:Table Action already exists。我原以为如果表已经存在,它根本不会运行。

我在引导模式时经常使用这种模式。我如何在 MySQL 中执行此操作?

最佳答案

在 mysql 中 compound statements只能在存储程序中使用,其中也包括 if 语句。

因此,一种解决方案是将您的代码包含在 stored procedure 中.

另一种解决方案是使用 create table if not exists ... 并在表定义中创建单独的索引,并使用 insert ignore insert ... select ... 以避免插入重复值。

关于mysql - 在 MySQL 中使用值插入创建幂等表和索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43438517/

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