在 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;
我正在尝试声明一个 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;