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

Enc*_*PTL 4 sql sqlite constraints

我试图删除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, 1)), 
    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)
);
Run Code Online (Sandbox Code Playgroud)

Mic*_*man 9

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


phi*_*ath 5

我自己也遇到过这个。一个简单的解决方案是使用DB Browser for SQLite

它让我可以通过 GUI 中的一个复选框来删除唯一的约束。