update базы по значению поля

Carolyne
Дата: 16.03.2004 12:45:38
есть таблица, в ней - поля: firm_id, firm_regdate, firm_name, firm_info, firm_price, firm_readydate, firm_show, firm_status, form_id, licenz_id, nalog_id, place_id, currency_id, ofshor_id, firm_type, firm_licenzdate, client_id, firm_date, firm_selldate, firm_account, firm_stopdate, firm_bonus, firm_bonustext...
так вот... client_id int4. по нему-то и надо апдейтить базу. т.е. хотелось бы, что б при заливании данных в базу по определенному клиент_ид там убивались все строки, содержащие данный id, а затем заливались новые строки. насколько реально? чем-то готовым можно?
2Shweik: искала по форуму - ничего не нашла ;)
wbear
Дата: 17.03.2004 11:48:42
тригер на инсерт тебе поможет...
см доки по посгресу
Carolyne
Дата: 22.03.2004 16:42:14
я только начинаю разбираться с Постгрисом...
может быть, кто-то напишет поподробнее, что мне нужно сделать?
Shweik
Дата: 22.03.2004 21:34:09
Вот тут точно готовенького не подадут.
Ну разве что какой-то пионер тебе напишет функцию - мне например влом
Ну а триггер выглядит примерно так:
trigger_entrydate BEFORE INSERT OR UPDATE ON retr_orders
FOR EACH ROW EXECUTE PROCEDURE trg_arh_clients_history()
Вот эту процедурку тебе и нужно
написать 8) PROCEDURE trg_arh_clients_history()
Carolyne
Дата: 23.03.2004 11:48:43
тада еще вопрос: firm_date он timestamp... что бы заработала фигня с firm_id, где назначается следующий ИД, я пишу в таблице: nextval('firms_firm_id_seq'::text).
а что надо сказать в firm_date, что б проставилась текущая дата типа этой: 2003-11-26 14:05:45.331901
а? О-)
Carolyne
Дата: 23.03.2004 12:06:43
а я уже все поняла %) с таймштампом разобралась %)))
но, млин, с апдейтом - все еще в прострации... :-/
чиста на SQL:
Дата: 23.03.2004 12:58:07
автор
что б при заливании данных в базу по определенному клиент_ид

Вот в той процедуре (это внешнее приложение? или еще что -то?), которая "заливка" и вызывайте:

BEGIN;
DELETE FROM ta_bla where client_id=[тут или вшивайте в строку значение id уже во внешнем, либо, если процедура оформляете в виде функции, $1];
INSERT INTO ta_bla (...) SELECT (...) FROM my_bla;
COMMIT;

например:
BEGIN;
DELETE FROM test
WHERE id=1;
INSERT INTO test (id, name) VALUES (1,'test_Transaction');
COMMIT;

если же это все хочется вызывать из функции - че-нть типа:

CREATE OR REPLACE FUNCTION public.test_truns_sql(int4)
RETURNS bool AS
'BEGIN;
DELETE FROM test
WHERE id= $1;
INSERT INTO test (id, name) VALUES ( $1,\'test_Transaction_By_FUNCTION\');
COMMIT;
SELECT TRUE;'
LANGUAGE 'sql' VOLATILE;

SELECT test_truns_sql(2);

как-то так.