Py学习  »  DATABASE

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

one-hand-octopus • 3 年前 • 1072 次点击  

我试图声明一个枚举并在表创建中使用它。这是我的代码:

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

但是MariaDB给了我一个错误:“@myEnum在这个位置无效,应该是BIGINT…”

有什么想法吗?

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/132279
 
1072 次点击  
文章 [ 1 ]  |  最新文章 3 年前
Bill Karwin
Reply   •   1 楼
Bill Karwin    3 年前

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;