2013-04-30 2 views
1

Я хочу создать триггер для действия вставки. Этот триггер должен срабатывать при создании новой строки клиентов. Триггер должен создать новую строку в таблице учетных записей, а затем вставить значение ключа обратно в строку, запускающую триггер.Вставить значение вставки триггера назад

clients: 
_id|firstname|lastname|accountnr 

accounts: 
accountnr|balance 

Я попытался создать триггер с одним вставкой и одним оператором обновления. Вставка создает новую учетную запись в таблице учетных записей. Проблема заключается в том, что в таблице учетных записей используется автоинкремент, поэтому я не знаю значения недавно созданной учетной записи. Это значение, которое мне нужно знать в инструкции обновления, чтобы обновить таблицу accountnr таблицы people в учетной записи в таблице учетных записей.

+0

Вы читали [документацию] (http://www.sqlite.org/lang_createtrigger.html)? Что вы пробовали? –

+0

Я попытался создать триггер с одним вставкой и одним оператором обновления. Вставка создает новую учетную запись в таблице учетных записей. Проблема заключается в том, что в таблице учетных записей используется автоинкремент, поэтому я не знаю значения недавно созданной учетной записи. Это значение, которое мне нужно знать в инструкции обновления, чтобы обновить accountnr таблицы people в учетной записи в таблице учетных записей – user1111652

ответ

1

Вот что last_insert_rowid() для:

CREATE TRIGGER new_account_for_new_client 
AFTER INSERT ON clients 
FOR EACH ROW 
WHEN NEW.accountnr IS NULL 
BEGIN 
    INSERT INTO accounts(balance) 
    VALUES(0); 

    UPDATE clients 
    SET accountnr = last_insert_rowid() 
    WHERE _id = NEW._id; 
END; 
+0

Спасибо человеку. Это именно то, что я искал. Ницца – user1111652

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