powered by simpleCommunicator - 2.0.52     © 2025 Programmizd 02
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Второй триггер не передает значение в другую таблицу
1 сообщений из 1, страница 1 из 1
Второй триггер не передает значение в другую таблицу
    #40027790
gbcbr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Please advise were result of trigger tr_stock_plus disappear?
Because after INSERT query:

Код: plsql
1.
2.
3.
INSERT INTO test.purchase(
	import_id, product_id, usd_price, qty)
	VALUES (2, 'CG-003', 40, 40);


I have normal reply, no error message:

Код: plsql
1.
2.
3.
INSERT 0 1
    Query
    returned successfully in 242 msec.



Data inserted in

> test.purchase

Код: html
1.
2.
3.
| import_id | product_id | usd_price | euro_price | qty |
|-----------|------------|-----------|------------|-----|
|     2     |  CG-003    |     33    |     33     |  40 |



and first trigger for currency convertion also works well, but no changes in second targeted table

> test.stock

Код: html
1.
2.
3.
| product_id | stock_qty | stock_price | stock_amount |
|------------|-----------|-------------|--------------|
|  CG-003    |   null    |    null     |     null     |


______________________________________________________

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
     CREATE TABLE test.purchase
    (
        import_id integer NOT NULL,
        product_id text COLLATE pg_catalog."default",
        usd_price numeric(10,2),
        euro_price numeric(10,2),
        qty integer
    )
    
    CREATE TRIGGER tr_p
        AFTER INSERT OR UPDATE OF usd_price
        ON test.purchase
        FOR EACH ROW
        EXECUTE PROCEDURE test.f_conv();

    CREATE FUNCTION test.f_conv()
        RETURNS trigger
        LANGUAGE 'plpgsql'
        COST 100
        VOLATILE NOT LEAKPROOF
    AS $BODY$
    BEGIN
    UPDATE test.purchase pr
    SET euro_price = usd_price / i.rate
    FROM  test.imports i
    WHERE pr.import_id = i.import_id;
    RETURN NEW;
    END
    
    CREATE TRIGGER tr_stock_plus
    AFTER INSERT
    ON test.purchase
    FOR EACH ROW
    EXECUTE PROCEDURE test.f_stock_plus();

    CREATE FUNCTION test.f_stock_plus()
    RETURNS trigger
    LANGUAGE 'plpgsql'
    COST 100
    VOLATILE NOT LEAKPROOF
    AS $BODY$
    BEGIN
    UPDATE test.stock s
    SET stock_qty = stock_qty + 
    (SELECT pr.qty
    FROM test.purchase pr	
    WHERE pr.product_id = s.product_id);
    RETURN NEW;
    END

    CREATE TABLE test.stock
    (
        product_id text COLLATE pg_catalog."default" NOT NULL,
        stock_qty numeric(10,0),
        stock_price numeric(10,2),
        stock_amt numeric(10,2),
        CONSTRAINT stock_pkey PRIMARY KEY (product_id)
    )
...
Рейтинг: 0 / 0
1 сообщений из 1, страница 1 из 1
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Второй триггер не передает значение в другую таблицу
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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