2017-02-02 6 views
0

Я пытаюсь удалить ограничение UNIQUE для столбца для sqlite, но у меня нет имени для удаления ограничения. Как я могу найти имя имени ограничения UNIQUE, чтобы удалить его.Удалить уникальное ограничение на столбец в базе данных sqlite

Ниже приводится схема я вижу за столом, я хочу, чтобы удалить ограничение

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) 
); 

ответ

3

SQLite поддерживает только limited ALTER TABLE, так что вы не можете удалить constaint с помощью ALTER TABLE. То, что вы можете сделать, чтобы «отбросить» столбец, - это переименовать таблицу, создать новую таблицу с той же схемой, за исключением ограничения UNIQUE, а затем вставить все данные в новую таблицу. Эта процедура задокументирована в Изменение других видов изменений схемы таблиц раздела документации ALTER TABLE.