我正在尝试删除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)
);
答案 0 :(得分:8)
SQLite仅支持limited ALTER TABLE,因此您无法使用ALTER TABLE删除constaint。 “删除”列可以做的是重命名表,使用除UNIQUE约束之外的相同模式创建新表,然后将所有数据插入到新表中。此过程记录在ALTER TABLE文档的进行其他种类的表模式更改部分。
答案 1 :(得分:0)
我自己碰到了这个。一个简单的解决方案是使用DB Browser for SQLite
它使我仅使用gui中的复选框即可删除唯一约束。