2016-05-09 2 views
0

Я хочу знать, есть ли способ блокировать обновления в таблице из базы данных SQLite android. Я разрабатываю приложение. В определенной таблице есть два внешних ключа, которые являются уникальным ограничением. После установки строки эту строку не следует обновлять. При необходимости он может быть удален. Имеет смысл для вас? Могу ли я создавать таблицы таким образом? Знаете ли вы, как лучше это кодировать?Блокировать обновления в таблице SQLite Android

+0

Используйте [триггер] (http://www.tutorialspoint.com/sqlite/sqlite_triggers.htm) –

+1

Не знаете, зачем вам нужно ограничение таблицы для этого. просто убедитесь, что вы никогда не вызываете «обновление» в любом месте вашего кода. – njzk2

ответ

2

Вы можете поставить trigger на стол:

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

Спасибо CL. Триггер работает отлично! См. Мои заявления в моем ответе. –

0

Это мой создать таблицу и триггер заявления:

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; 

Это вызывает отлично работает. Благодаря!

Смежные вопросы