Nasıl GÜNCELLEME ve aynı zamanda SEÇİMİ

3 Cevap php

Ben bazı tabloların satırları güncellemek ve daha sonra bu satırları görüntülemek gerekir. Tek bir sorgu ile bu yapmak ve bu 2 sorguyu önlemek için bir yolu var mı? :

UPDATE table SET foo=1 WHERE boo=2

SELECT * from table WHERE ( foo=1 ) AND ( boo=2 )

3 Cevap

PostgreSQL v8.2 ve daha yeni olarak kullanarak bunu yapabilirsiniz RETURNING :

UPDATE table
SET foo=1
WHERE boo=2
RETURNING *

PL / pgSQL bir saklı yordam kullanabilirsiniz. [Dokümanlar] bir göz atın [1]

Something like this

CREATE FUNCTION run(fooVal int, booVal int) 
RETURNS TABLE(fooVal int, booVal int)
AS $$
BEGIN
  UPDATE table SET foo = fooVal WHERE boo= booVal;
  RETURN QUERY SELECT fooVal, booVal from table WHERE ( foo = fooVal ) AND ( boo = booVal );
END;
$$ LANGUAGE plpgsql;

Başka bir açıklama göndermek için gidiş dönüş zaman kazandıracak. Bu performans engel olmamalıdır. Yani kısa cevap: Sadece iki sorgu kullanabilirsiniz. O güzel ve bu SQL bunu nasıl.

[1]: http://www.postgresql.org/docs/8.4/static/plpgsql.html docs

Saklı yordamı veya işlevini kullanabilirsiniz. Bu sorguları içeren olacaktır.