2016-04-05 22 views
0

PostgreSQL 9.4.5 kullanıyorum ve PL/pgSQL için yeniyim.
users tablosundaki her kullanıcı için bir mesaj kaydı eklemem gerekiyor. BöyleEkler için LOOP kullan?

şey:

user_id = SELECT id from users; 

    FOR i in user_id 
    INSERT INTO "messages" ("sender_id", "receiver_id", "content", 
    "hashed_id", "created_at", "updated_at") VALUES (1,i, 
    "Message text here",(SELECT concat(md5(random()::text), 
    md5(random()::text))),'2016-04-04 20:30:32','2016-04-04 20:30:32')'; 
    END 

Nasıl Bu hale getirmek?

+1

PL/SQL, Oracle db'de kullanılan programlama dilidir. Postgres PL/pgSQL var. –

cevap

3

Sen insert . . . select kullanarak bunu yapabilirsiniz:

INSERT INTO "messages" ("sender_id", "receiver_id", "content", "hashed_id", "created_at", "updated_at") 
    SELECT 1, id, 'Message text here', 
      concat(md5(random()::text), md5(random()::text)), 
      '2016-04-04 20:30:32','2016-04-04 20:30:32' 
    FROM users; 

Not: Sen concat() için Alt Seç'i gerekmez.

+0

Teşekkürler Gordon! Bu bana çok yardımcı oldu! – Simon