2017-02-02 12 views
0

sqliteの列でUNIQUE制約を削除しようとしていますが、制約を削除する名前がありません。それを削除するには、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

を削除したい私はテーブルを参照スキーマであるあなたはALTER TABLEを使用してconstaintを削除することはできませんので、SQLiteは唯一、limited ALTER TABLEをサポートしています。列を「削除」するには、表の名前を変更し、UNIQUE制約以外の同じスキーマを持つ新しい表を作成し、すべてのデータを新しい表に挿入する必要があります。この手順は、他の種類のテーブルスキーマ変更の作成のALTER TABLEドキュメントに記載されています。

関連する問題