我尝试将一些SQL Server模式更改转换为MySQL。我知道MySQL中的CREATE TABLE IF NOT EXISTS。我不认为我可以在这里使用。在MySQL中使用值插入创建幂等表和索引
我想要做的是在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中执行此操作?
2017-04-16
rianjs
+0
一种选择是使用存储的过程,见[16年1月14日CREATE PROCEDURE和CREATE FUNCTION语法](https://dev.mysql.com/doc/refman/5.7/en/create-procedure.html)。 –