MyTetra Share
Делитесь знаниями!
Триггеры в SQLite
Время создания: 25.12.2012 11:55
Раздел: Компьютер - Программирование - SQL - SQLite3
Запись: xintrea/mytetra_syncro/master/base/1356422142s3rm37dzoy/text.html на raw.github.com

Триггеры в SQLite


В SQLite много чего нет, но там есть такие полезные вещи, как триггеры. Кто не знает, триггеры – это функции, которые выполняются по какому-то событию. Пример событий: вставка строки в базу, удаление строки, обновление поля. Причем триггеры могут срабатывать как до выполнения действий по некоторому событию, так и после.


Добавим к нашей таблице my_clients еще одну – my_clients_phones. Будем там хранить для каждого клиента номера телефонов (по несколько на одного клиента):


CREATE TABLE my_clients_phones (

[id INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT,

[client_id] INTEGER NOT NULL,

[phone] VARCHAR(255) NOT NULL

)


И вставим для Васи Пупкина (его ID у меня = 29) два номера телефона:


INSERT INTO my_clients_phones (client_id, phone) VALUES (29, '123456');

INSERT INTO my_clients_phones (client_id, phone) VALUES (29, '654321');


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


CREATE TRIGGER delete_client BEFORE DELETE ON my_clients FOR EACH ROW

BEGIN

DELETE FROM my_clients_phones WHERE client_id = OLD.id;

END


Здесь мы создали простой триггер, который выполнит запрос удаления из таблицы my_clients_phones номера телефона, владелец которого будет удален.



Заключение


Здесь я лишь показал, как примерно можно пользоваться PDO и SQLite. За подробной документацией отправляю Вас на следующие сайты:


Документация по SQLite:

http://i-novice.net/gout/DkIQRQgcSxMSRxkWRl9cFQYYXkYE/


Документация по PDO:

http://i-novice.net/gout/DkIQRQgcSxYQAhkVX0MbDwZCHkQHWw==/


Как использовать SQLite в PHP

http://www.litewebsite.com/


Так же в этом разделе:
 
MyTetra Share v.0.65
Яндекс индекс цитирования