更新表,在SQLite中将两列作为唯一约束,而不是再次创建表

时间:2017-04-09 07:04:29

标签: database sqlite alter-table unique-key

我想更新SQLite数据库中的表,并将UNIQUE约束添加到 Data 表中的两列。

这是我正在尝试的,但却抛出了错误。

ALTER TABLE Data
ADD CONSTRAINT Data UNIQUE(id, dateofday);

之前的所有答案都在我不想要的创建表格上。有什么建议吗?

1 个答案:

答案 0 :(得分:3)

不可能。您无法在sqlite中为现有表添加约束。您只能重命名表或向表中添加列。

链接供您参考:http://www.sqlite.org/lang_altertable.html

但是,您可以使用此备用方法来实现相同目的。

  1. 使用与当前表相同的列创建一个临时表,其中包含您需要的所有约束。

  2. 然后将所有数据从旧表移动到新临时表,并使用约束定义 INSERT INTO Destination SELECT * FROM Source;

  3. 检查您是否已将原始表格中的所有数据复制到临时表格。

  4. 删除原始表并将临时表重命名为原始表的名称。