【问题标题】:mysql Alter table to add column with selectedmysql 更改表以添加选定的列
【发布时间】:2017-03-06 11:30:08
【问题描述】:

我正在尝试使用 ALTER 向测试表添加一个新列 (authorID),但我想要一个特定的值(我不知道)。

我正在尝试运行以下命令,但出现 SQL 错误。请问这是可能的吗,如果可以,请问我哪里出错了?

SELECT id FROM authors WHERE emailAddress = 'UNASSIGNED' into @unassignedID;
ALTER TABLE Tests ADD COLUMN authorID INT NOT NULL DEFAULT @unassignedID;

作者表:

CREATE TABLE authors
(
  ID INT NOT NULL AUTO_INCREMENT,
  emailAddress VARCHAR(100) NOT NULL UNIQUE,
  regionID INT NOT NULL,
  PRIMARY KEY(ID)
);

测试表:

CREATE TABLE Tests
(
  testID INT NOT NULL AUTO_INCREMENT,
  Title VARCHAR(100) DEFAULT NULL, 
  PRIMARY KEY(testID)
);

【问题讨论】:

  • 不,它不是那样工作的。在更改表之后,您需要插入或更新(取决于测试表中是否有记录)。如果需要插入,请使用insert ... select ... instead。您也不能像这样将结果列表检索到会话变量中。

标签: mysql alter-table


【解决方案1】:

你可以使用preparedstatement:

SELECT id into @unassignedID   FROM authors  WHERE emailAddress = 'UNASSIGNED' limit 1; 
SET @sql = CONCAT('ALTER TABLE Tests  ADD COLUMN authorID INT NOT NULL DEFAULT ',@unassignedID);
PREPARE stmt FROM @sql;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;

【讨论】:

    猜你喜欢
    • 2011-01-10
    • 2023-03-05
    • 1970-01-01
    • 1970-01-01
    • 2015-07-08
    • 2012-06-10
    • 1970-01-01
    • 2017-08-02
    • 1970-01-01
    相关资源
    最近更新 更多