删除sqlite数据库中列的唯一约束

前端之家收集整理的这篇文章主要介绍了删除sqlite数据库中列的唯一约束前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我试图删除sqlite列上的UNIQUE约束,但我没有删除约束的名称.如何找到UNIQUE约束名称名称以将其删除.

下面是我在表中看到的模式,我想删除约束

UNIQUE(datasource_name)

sqlite> .schema datasources
CREATE TABLE "datasources" (
    created_on DATETIME NOT NULL,changed_on DATETIME NOT NULL,id INTEGER NOT NULL,datasource_name VARCHAR(255),is_featured BOOLEAN,is_hidden BOOLEAN,description TEXT,default_endpoint TEXT,user_id INTEGER,cluster_name VARCHAR(250),created_by_fk INTEGER,changed_by_fk INTEGER,"offset" INTEGER,cache_timeout INTEGER,perm VARCHAR(1000),filter_select_enabled BOOLEAN,params VARCHAR(1000),PRIMARY KEY (id),CHECK (is_featured IN (0,1)),CHECK (is_hidden IN (0,FOREIGN KEY(created_by_fk) REFERENCES ab_user (id),FOREIGN KEY(changed_by_fk) REFERENCES ab_user (id),FOREIGN KEY(cluster_name) REFERENCES clusters (cluster_name),UNIQUE (datasource_name),FOREIGN KEY(user_id) REFERENCES ab_user (id)
);

解决方法

sqlite仅支持 limited ALTER TABLE,因此您无法使用ALTER TABLE删除constaint. “删除”列可以做的是重命名表,使用除UNIQUE约束之外的相同模式创建新表,然后将所有数据插入到新表中. ALTER TABLE文档的“制作其他种类的表模式更改”部分中介绍了此过程.

猜你在找的Sqlite相关文章