Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
помогите с функцией
|
|||
|---|---|---|---|
|
#18+
Помогите в такой ситуации. Есть две таблицы. Нужно продублировать два значения столбца с одной таблицы в другую. Структура таблиц. Первая userdb client_id integer NOT NULL, client_name character varying(200) NOT NULL, telnumber character varying(200), client_address character varying(200) Вторая condition_work client_id integer NOT NULL, client_name character varying(200), price integer, condition character varying(50), day_delay character varying(50) Хочу после инсерта в первую userdb поля client_id и client_name что б проинсертило эти же значения и в таблицу condition_work столбцы client_id и client_name. Создаю триггер CREATE TRIGGER insert_id_to_condition_work AFTER INSERT ON userdb FOR EACH ROW EXECUTE PROCEDURE insert_id_condition_work(); далее функцию. CREATE OR REPLACE FUNCTION insert_id_condition_work() RETURNS "trigger" AS ' BEGIN Вот как тут правильно писать не знаю, предполагаю чет в ту сторону. UPDATE condition_work SET client_id=new.client_id; END; ' LANGUAGE 'plpgsql' VOLATILE; ALTER FUNCTION insert_id_condition_work() OWNER TO postgres; Подтолкните как правильно написать в теле функции. Спасибо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.07.2007, 13:15 |
|
||
|
помогите с функцией
|
|||
|---|---|---|---|
|
#18+
Так, наверно... INSERT INTO condition_work (client_id,client_name) VALUES (NEW.client_id,NEW.client_name); return NEW; Только client_name во второй таблице - не очень хорошая идея. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.07.2007, 14:07 |
|
||
|
помогите с функцией
|
|||
|---|---|---|---|
|
#18+
МиТак, наверно... INSERT INTO condition_work (client_id,client_name) VALUES (NEW.client_id,NEW.client_name); return NEW; Только client_name во второй таблице - не очень хорошая идея. Спасибо. Ща попробуемс. А почему не очень хорошая идея? На каком основании?(извините не спец) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.07.2007, 14:28 |
|
||
|
помогите с функцией
|
|||
|---|---|---|---|
|
#18+
prodider МиТак, наверно... INSERT INTO condition_work (client_id,client_name) VALUES (NEW.client_id,NEW.client_name); return NEW; Только client_name во второй таблице - не очень хорошая идея. Спасибо. Ща попробуемс. А почему не очень хорошая идея? На каком основании?(извините не спец) Работает 100% с первого. Появился второй вопрос. По идее можно же сделать так что бы при удалении client_id и client_name c userdb удалялась СТРОКА с condition_work. CREATE TRIGGER drop_id_to_condition_work AFTER DELETE ON userdb FOR EACH ROW EXECUTE PROCEDURE drop_id_condition_work(); CREATE OR REPLACE FUNCTION insert_id_condition_work() RETURNS "trigger" AS ' BEGIN DROP колонки FROM condition_work WHERE тут ЧТО? END; ' LANGUAGE 'plpgsql' VOLATILE; ALTER FUNCTION insert_id_condition_work() OWNER TO postgres; ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.07.2007, 14:40 |
|
||
|
помогите с функцией
|
|||
|---|---|---|---|
|
#18+
ПАРДОН за ОШИБКИ Работает 100% с первого. Появился второй вопрос. По идее можно же сделать так что бы при удалении client_id и client_name c userdb удалялась СТРОКА с condition_work. CREATE TRIGGER drop_id_to_condition_work AFTER DELETE ON userdb FOR EACH ROW EXECUTE PROCEDURE drop_id_condition_work(); CREATE OR REPLACE FUNCTION drop_id_condition_work() RETURNS "trigger" AS ' BEGIN DROP колонки FROM condition_work WHERE тут ЧТО? END; ' LANGUAGE 'plpgsql' VOLATILE; ALTER FUNCTION drop_id_condition_work() OWNER TO postgres; ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.07.2007, 14:41 |
|
||
|
помогите с функцией
|
|||
|---|---|---|---|
|
#18+
Наверно, это имелось в виду: delete from condition_work where client_id =OLD.client_id; return OLD; Доп. инфо см. тут А почему не очень хорошая идея? Потому что одни и те же данные будут храниться в двух местах, что со временем неизбежно приведет к их рассогласованию. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.07.2007, 16:45 |
|
||
|
помогите с функцией
|
|||
|---|---|---|---|
|
#18+
МиНаверно, это имелось в виду: delete from condition_work where client_id =OLD.client_id; return OLD; Доп. инфо см. тут А почему не очень хорошая идея? Потому что одни и те же данные будут храниться в двух местах, что со временем неизбежно приведет к их рассогласованию. спасибо большое! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.07.2007, 12:40 |
|
||
|
помогите с функцией
|
|||
|---|---|---|---|
|
#18+
prodider МиНаверно, это имелось в виду: delete from condition_work where client_id =OLD.client_id; return OLD; Доп. инфо см. тут А почему не очень хорошая идея? Потому что одни и те же данные будут храниться в двух местах, что со временем неизбежно приведет к их рассогласованию. спасибо большое!Не в качестве поучения, но для самообразования - почитайте что-нибуть про "нормализацию". И вопросы такие сами собой пропадут. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.07.2007, 12:44 |
|
||
|
|

start [/forum/topic.php?fid=53&msg=34689246&tid=2005221]: |
0ms |
get settings: |
6ms |
get forum list: |
16ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
64ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
51ms |
get tp. blocked users: |
2ms |
| others: | 247ms |
| total: | 408ms |

| 0 / 0 |
