【问题标题】:Alter table for add columns and constraints更改表以添加列和约束
【发布时间】:2015-07-10 15:32:46
【问题描述】:

你好,我有这个,但它显示错误

ERROR 1064 (42000) at line 61: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '(
  ADD COLUMN `CIUDAD_ID` int(11) NOT NULL AUTO_INCREMENT,
  ADD COLUMN `DEPART' at line 1

语句是下一个:

  ALTER TABLE `ciudad` 
  (
    ADD COLUMN `CIUDAD_ID` int(11) NOT NULL AUTO_INCREMENT,
    ADD COLUMN `DEPARTAMENTO_ID` int(11) NOT NULL,
    ADD COLUMN `REGION_ID` int(11) NOT NULL,
    ADD COLUMN `CODIGO` char(50) DEFAULT NULL,
    ADD COLUMN `DESCRIPCION` char(100) DEFAULT NULL,
    PRIMARY KEY (`CIUDAD_ID`),
    KEY `FK_DEPARTAMENTO_CIUDAD` (`DEPARTAMENTO_ID`),
    KEY `FK_REGION_CIUDAD` (`REGION_ID`),
    CONSTRAINT `FK_DEPARTAMENTO_CIUDAD` FOREIGN KEY (`DEPARTAMENTO_ID`)
    REFERENCES `departamento` (`DEPARTAMENTO_ID`),
    CONSTRAINT `FK_REGION_CIUDAD` FOREIGN KEY (`REGION_ID`) 
    REFERENCES `region` (`REGION_ID`)
    ) 
ENGINE=InnoDB AUTO_INCREMENT=9056 DEFAULT CHARSET=utf8;

【问题讨论】:

  • 您确定要更改表而不是创建表吗?这是要添加到表中的很多列。此外,如果您实际上是在尝试更改表,我认为您不能在表已经存在时添加“非空”列而不提供默认值......也许......

标签: mysql key constraints alter-table


【解决方案1】:
ALTER TABLE `ciudad` 
ADD COLUMN `CIUDAD_ID` int(11) NOT NULL AUTO_INCREMENT,
ADD COLUMN `DEPARTAMENTO_ID` int(11) NOT NULL,
ADD COLUMN `REGION_ID` int(11) NOT NULL,
ADD COLUMN `CODIGO` char(50) DEFAULT NULL,
ADD COLUMN `DESCRIPCION` char(100) DEFAULT NULL,
ADD PRIMARY KEY (`CIUDAD_ID`),
ADD KEY `FK_DEPARTAMENTO_CIUDAD` (`DEPARTAMENTO_ID`),
ADD KEY `FK_REGION_CIUDAD` (`REGION_ID`),
ADD CONSTRAINT `FK_DEPARTAMENTO_CIUDAD` FOREIGN KEY (`DEPARTAMENTO_ID`)
REFERENCES `departamento` (`DEPARTAMENTO_ID`),
ADD CONSTRAINT `FK_REGION_CIUDAD` FOREIGN KEY (`REGION_ID`) 
REFERENCES `region` (`REGION_ID`),
ENGINE=InnoDB AUTO_INCREMENT=9056 DEFAULT CHARSET=utf8;

【讨论】:

  • 现在我有这个错误:不正确的表定义;只能有一个自动列,并且必须定义为一个键
【解决方案2】:

ALTER 语句中的列命令不需要括号。

试试这个:

ALTER TABLE ciudad
ADD COLUMN CIUDAD_ID int(11) NOT NULL AUTO_INCREMENT,
ADD COLUMN DEPARTAMENTO_ID int(11) NOT NULL,
ADD COLUMN REGION_ID int(11) NOT NULL,
ADD COLUMN CODIGO char(50) DEFAULT NULL,
ADD COLUMN DESCRIPCION char(100) DEFAULT NULL,
PRIMARY KEY (CIUDAD_ID),
KEY FK_DEPARTAMENTO_CIUDAD (DEPARTAMENTO_ID),
KEY FK_REGION_CIUDAD (REGION_ID),
CONSTRAINT FK_DEPARTAMENTO_CIUDAD FOREIGN KEY (DEPARTAMENTO_ID)
REFERENCES departamento (DEPARTAMENTO_ID),
CONSTRAINT FK_REGION_CIUDAD FOREIGN KEY (REGION_ID) 
REFERENCES region (REGION_ID),
ENGINE=InnoDB AUTO_INCREMENT=9056 DEFAULT CHARSET=utf8;

【讨论】:

    【解决方案3】:

    谢谢你,我做到了

    ALTER TABLE `ciudad` 
      ADD COLUMN `CIUDAD_ID` int(11) NOT NULL,
      ADD COLUMN `DEPARTAMENTO_ID` int(11) NOT NULL,
      ADD COLUMN `REGION_ID` int(11) NOT NULL,
      ADD COLUMN `CODIGO` char(50) DEFAULT NULL,
      ADD COLUMN `DESCRIPCION` char(100) DEFAULT NULL,
      ADD KEY (`CIUDAD_ID`),
      ADD KEY `FK_DEPARTAMENTO_CIUDAD` (`DEPARTAMENTO_ID`),
      ADD KEY `FK_REGION_CIUDAD` (`REGION_ID`),
      ADD CONSTRAINT `FK_DEPARTAMENTO_CIUDAD` FOREIGN KEY (`DEPARTAMENTO_ID`)
      REFERENCES `departamento` (`DEPARTAMENTO_ID`),
      ADD CONSTRAINT `FK_REGION_CIUDAD` FOREIGN KEY (`REGION_ID`) 
      REFERENCES `region` (`REGION_ID`),
      ENGINE=InnoDB DEFAULT CHARSET=utf8;
    

    没有主键,因为我有一个。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-01-07
      • 2011-01-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-04-26
      • 1970-01-01
      相关资源
      最近更新 更多