- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
CREATE FUNCTION "insert_payment" (integer) RETURNS integer AS '
DECLARE
l_payment integer;
BEGIN
INSERT INTO payments (client,type_,pdate,number_)
VALUES ($1,4,current_date,nextval_(''payments_number_1_seq''));
SELECT INTO l_payment last_value FROM payments_id_seq;
RETURN l_payment;
END;' LANGUAGE 'plpgsql';
Lure Of Chaos 12.01.2011 15:02 # 0
topilnik 13.03.2011 03:07 # −1
guest 15.04.2017 07:45 # −5
guest 24.01.2017 07:06 # −5
StriderMan 19.01.2011 12:18 # +1
Вот для этого в Firebird, например, есть волшебная секция RETURNING в INSERT и UPDATE запросах:
запрос вернет ID вставленной записи
Другой православный способ - использовать генераторы (SEQUENCE) вместо автоинкрементных полей.
Отстутствие этих двух фич я не могу простить MySQLю. Кстати, проясните раз и навсегда как правильно решать эту задачу в MySQL? В своем проекте делал в PHP через mysqli_insert_id, но ИМХО это костыль какой-то.
StriderMan 19.01.2011 12:21 # 0