微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

android – 改变表的独特字段

我有一个表,其中包含一个带有2个约束的唯一键.我想改变表格,以便我可以删除那里唯一字段中的一个约束.

我当前的数据库架构:

CREATE TABLE testtable(test1 TEXT,test2 TEXT,test3 TEXT,test4 TEXT DEFAULT FALSE,UNIQUE(test1,test2))

我已经在这个表中填充了数据,并且不想在我的下一个版本中删除并重新创建此表.有没有办法改变表的独特字段.我没有为我的表设置约束.

我希望我的数据库架构在更新后像这样.

CREATE TABLE testtable(test1 TEXT,test2 TEXT,test3 TEXT,test4 TEXT DEFAULT FALSE,UNIQUE(test1))

解决方法:

在其他DBMS中,您将使用ALTER TABLE DROP CONSTRAINT ….但是,sqlite仅支持ALTER TABLE命令的RENAME TABLE和ADD COLUMN变体(Source).

因此,我担心你必须创建一个新表:

CREATE TABLE testtable2(
   test1 TEXT, test2 TEXT, test3 TEXT, test4 TEXT DEFAULT FALSE,
   UNIQUE (test1)
);

然后将旧表中的数据插入到新表中:

INSERT INTO testtable2 SELECT * FROM testtable;

然后你可以删除旧表:

DROP TABLE testtable;

最后将新表重命名为原始名称:

ALTER TABLE testtable2 RENAME TO testtable;

更新:

请注意,您的新约束将不那么宽松.例如,如果原始表中包含以下行:

test1       test2       test3       test4     
----------  ----------  ----------  ----------
a           a           100         1         
a           b           200         2         
a           c           300         3         

然后INSERT INTO testtable2 SELECT * FROM testtable;会失败,因为test1不是唯一的:

SQL error: column test1 is not unique

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐