在 mySQL 中创建 table 时如何使用变量?

How to use a variable when creating a table in mySQL?

我正在尝试声明一个 ENUM 并在 table 创建中使用它。这是我的代码:

SET @myEnum= ENUM('fulfilled', 'noshow', 'cancelled');
CREATE TABLE `Appointments` (
    `AppointmentID` VARCHAR(36) NOT NULL UNIQUE,
    `AppointmentFulfilled` @myEnum
);

但是 MariaDB 给我错误:“@myEnum 在这个位置无效,需要 BIGINT...”

有什么想法吗?

SQL 语法和标识符必须在解析 CREATE TABLE 语句时固定。因此您不能使用变量或参数。

您可以创建一个字符串,插入变量,然后准备并执行该字符串作为动态 SQL。

SET @myEnum= 'ENUM(''fulfilled'', ''noshow'', ''cancelled'')';

SET @ddl = CONCAT(
  'CREATE TABLE `Appointments` (
    `AppointmentID` VARCHAR(36) NOT NULL UNIQUE,
    `AppointmentFulfilled` ', @myEnum,
  ')'
);

PREPARE stmt FROM @ddl;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;