Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Помогите с созданием простого триггера / 5 сообщений из 5, страница 1 из 1
28.01.2007, 23:18
    #34288361
slackman
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите с созданием простого триггера
Всем привет!!!!
Встал на не проходимой стене... все потихоньку разбирался, но вот когда дело дошло до триггеров.... (

Приложение работает под win > postgresql 8.2 php apache

Сначала включил или создал поддержку plpgsql я так понял (все делал по книгам и докам) след. обрзом, cmd line: createlang -d tr plpgsql (база так и называется - tr)

Система в которой есть рабочие:

CREATE TABLE worker
(
worker_id serial NOT NULL,
worker_password text,
worker_login text,
worker_phonehome text,
worker_phonemob text,
worker_email text,
worker_dateofemploy date,

И есть человек который регистрирует таких рабочих в системе, добавляя в БД сотрудников.
Вот такая ситуация, если менеджер, когда добавляет нового сотрудника при заполнении поля login вводит уже существующий в БД login. Поставил перед собой задачу, надо написать триггер который будет проверят этот вводимый login.

Задача: Написать триггерную профедуру (функцию) и триггер... Перепробывал из книжек все, вроде везде что то похожее..

!!!!!!!!!! Еще вопрос народ, на postgresql.org прочитал, что есть IRC канал по postgresql. Зашел на него , но все иностранцы как мне показалось. Вы заходите туда? Есть ли IRC каналы по postgresql на русском?

Спасибо!
...
Рейтинг: 0 / 0
29.01.2007, 06:03
    #34288527
Kruchinin Pahan
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите с созданием простого триггера
slackman

CREATE TABLE worker
(
worker_id serial NOT NULL,
worker_password text,
worker_login text,
worker_phonehome text,
worker_phonemob text,
worker_email text,
worker_dateofemploy date,

И есть человек который регистрирует таких рабочих в системе, добавляя в БД сотрудников.
Вот такая ситуация, если менеджер, когда добавляет нового сотрудника при заполнении поля login вводит уже существующий в БД login. Поставил перед собой задачу, надо написать триггер который будет проверят этот вводимый login.

Задача: Написать триггерную профедуру (функцию) и триггер... Перепробывал из книжек все, вроде везде что то похожее..

А что мешает поставить UNIQUE на Worker_Login?

slackman
!!!!!!!!!! Еще вопрос народ, на postgresql.org прочитал, что есть IRC канал по postgresql. Зашел на него , но все иностранцы как мне показалось. Вы заходите туда? Есть ли IRC каналы по postgresql на русском?

Я лично не хожу.
...
Рейтинг: 0 / 0
29.01.2007, 16:49
    #34290452
slackman
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите с созданием простого триггера
Возможно Unique выход.... Но хотелось работу триггеров. Он при попытке начать работать пишет что не может достать из табл. worker - worker_id
Я думал что задача не сложная и уже у кого то есть готовые триггеры на проверку существования login'а?
...
Рейтинг: 0 / 0
29.01.2007, 18:19
    #34290801
Jelis
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите с созданием простого триггера
slackmanВозможно Unique выход.... Но хотелось работу триггеров. Он при попытке начать работать пишет что не может достать из табл. worker - worker_id
Я думал что задача не сложная и уже у кого то есть готовые триггеры на проверку существования login'а?
Задача в самом деле не сложная, и для нее уже давно сделали прикрасное решение, и это, как сказал Kruchinin Pahan, uniq ключ! :-) А вот как эту ситуацию(срабатывание ограницения) обрабатывать в php это другой вопрос.
Ну если очень хочеться это через тригер сделать (в образовательных целях) - пишите чего делате и чего не работает, посмотрим.
...
Рейтинг: 0 / 0
30.01.2007, 14:19
    #34292892
Funny_Falcon
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите с созданием простого триггера
С триггером будет работать практически, но не теоретически.

Реально две транзакции: 1. и 2.
1. начались
2. начались
1. вставили worker_login='vasya' - триггер других вась не увидел и вставка удалась
2. вставили worker_login='vasya' - триггер других вась не увидел, ибо первая транзакция еще не завершилась, и вставка удалась
1. закончились
2. закончились

В итоге имеем двух вась ('vasya'). Сам проверял - именно так и происходит.
Если же UNIQUE, то все нормально - вторая тразнакция блокируется и после завершения первой выскакивает exception.
...
Рейтинг: 0 / 0
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Помогите с созданием простого триггера / 5 сообщений из 5, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]