2016-05-09 6 views
0

Ich möchte wissen, ob es eine Möglichkeit gibt, Updates in einer Tabelle von SQLite Android-Datenbank zu blockieren. Ich entwickle eine App. Bestimmte Tabellen haben zwei Fremdschlüssel, die eine eindeutige Einschränkung darstellen. Nach dem Einfügen einer Zeile sollte diese Zeile nicht aktualisiert werden. Es kann nur bei Bedarf gelöscht werden. Macht das Sinn für dich? Kann ich meine Tabellen auf diese Weise erstellen? Kennen Sie einen besseren Weg, dies zu programmieren?Blockieren Sie Updates in einer Tabelle SQLite Android

+0

Verwenden Sie einen [Auslöser] (http://www.tutorialspoint.com/sqlite/sqlite_triggers.htm) –

+1

nicht sicher, warum Sie eine Tabelleneinschränkung dafür benötigen. Achten Sie darauf, dass Sie nirgendwo in Ihrem Code "update" aufrufen. – njzk2

Antwort

2

Sie eine trigger auf den Tisch legen konnte:

CREATE TRIGGER block_MyTable_update 
BEFORE UPDATE ON MyTable 
BEGIN 
    SELECT RAISE(FAIL, "updates not allowed"); 
END; 
+0

Danke CL. Der Auslöser funktioniert gut! Siehe meine Aussagen in meiner Antwort. –

0

Das ist mein create table und Trigger-Anweisungen:

CREATE TABLE 
IF NOT EXISTS movie (
    _id INTEGER PRIMARY KEY, 
    adult INTEGER NOT NULL, 
    backdrop_path TEXT, 
    belongs_to_collection INTEGER, 
    budget INTEGER, 
    homepage TEXT, 
    imdb_id TEXT, 
    original_language TEXT NOT NULL, 
    original_title TEXT NOT NULL, 
    overview TEXT NOT NULL, 
    popularity REAL NOT NULL, 
    poster_path TEXT NOT NULL, 
    release_date TEXT NOT NULL, 
    revenue INTEGER, 
    runtime INTEGER, 
    status TEXT, 
    tagline TEXT, 
    title TEXT NOT NULL, 
    video TEXT NOT NULL, 
    vote_average REAL NOT NULL, 
    vote_count INTEGER NOT NULL); 

CREATE TABLE 
IF NOT EXISTS genre (
    _id INTEGER PRIMARY KEY, 
    name TEXT NOT NULL); 

CREATE TABLE 
IF NOT EXISTS movie_genre (
    _id INTEGER PRIMARY KEY AUTOINCREMENT, 
    movie_id INTEGER NOT NULL, 
    genre_id INTEGER NOT NULL, 
     FOREIGN KEY (movie_id) REFERENCES movie(_id) ON UPDATE RESTRICT, 
     FOREIGN KEY (genre_id) REFERENCES genre(_id) ON UPDATE RESTRICT, 
     CONSTRAINT contrstraint_movie_genre_unique 
      UNIQUE (movie_id, genre_id) ON CONFLICT ROLLBACK); 

CREATE TRIGGER 
IF NOT EXISTS triger_movie_genre_update 
    BEFORE 
     UPDATE OF movie_id, genre_id ON movie_genre 
      BEGIN 
       SELECT RAISE(FAIL, "UPDATES NOT ALLOWED") 
      END; 

Dies funktioniert gut löst. Vielen Dank!