如何使用现有列在表中添加外键,而不会丢失数据?

时间:2015-04-06 12:49:59

标签: mysql

我有一个表,我需要在现有列上添加外键。以下是创建表:

CREATE TABLE `itemtx` (
  `itemTxid` int(11) NOT NULL AUTO_INCREMENT,
  `itemcode` varchar(1) NOT NULL,
  `weight` decimal(7,3) DEFAULT NULL,
  `txtype` varchar(10) DEFAULT 'Pickup',
  `tripstopid` int(11) NOT NULL,
  `barcode` varchar(25) DEFAULT NULL,
  `bagcount` int(11) DEFAULT '1',
  PRIMARY KEY (`itemTxid`)
) ENGINE=InnoDB AUTO_INCREMENT=33524 DEFAULT CHARSET=latin1

我需要在tripstopid列上添加外键。我不能删除或清空表,因为它包含数据。以下是参考表:

CREATE TABLE `tripstop` (
  `tripstopid` int(11) NOT NULL AUTO_INCREMENT,
  `tripid` int(11) DEFAULT NULL,
  `locationName` varchar(100) DEFAULT NULL,
  `userName` varchar(100) DEFAULT NULL,
  `locationid` int(11) DEFAULT NULL,
  `datetime` varchar(20) DEFAULT NULL,
  `createts` varchar(20) DEFAULT NULL,
  `latitude` double DEFAULT NULL,
  `longitude` double DEFAULT NULL,
  `userid` int(11) DEFAULT NULL,
  `tid` int(11) DEFAULT NULL,
  PRIMARY KEY (`tripstopid`)
) ENGINE=InnoDB AUTO_INCREMENT=4691 DEFAULT CHARSET=latin1

如何在不丢失数据的情况下执行此操作?

1 个答案:

答案 0 :(得分:6)

您可以通过以下方式实现此目标:

ALTER TABLE itemtx
ADD FOREIGN KEY (tripstopid) REFERENCES tripstop(tripstopid);

通过创建表格,在其中插入数据然后更新外键表格来验证,之前输入的数据不会丢失。