пʼятниця, 22 жовтня 2010 р.

ID змінених рядків в PostgreSQL

Нещодавно виникло питання як узнати ID останнього вставленого рядка в таблиці для PostgreSQL. В Perl'і це робиться через dbh->last_insert_id.

Виявилося, що можливо узнати це і безпосередньо через SQL запит, слід лише використати службове слово RETURNING.

Для таблиці, створеної наступною командою:
CREATE TABLE test_table
(
  id serial NOT NULL,
  "name" character varying NOT NULL,
  PRIMARY KEY (id)
);


Операція INSERT з поверненням ID виглядатиме так:
INSERT INTO test_table (name)
    VALUES ('test name')
    RETURNING id; 

Якщо у нас є більше одного рядка з name = 'test name', наступна операція UPDATE поверне список змінених ID:
UPDATE test_table
SET
  name = 'TEST name'
WHERE
  name = 'test name'
RETURNING id;

Немає коментарів: