2016-04-05 11 views
0

Ich benutze PostgreSQL 9.4.5 und ich bin neu in PL/pgSQL.
Ich muss einen Nachrichtensatz für jeden Benutzer in der users Tabelle einfügen.LOOP für Einsätze verwenden?

Etwas wie folgt aus:

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 

Wie dieses Recht zu bekommen?

+1

PL/SQL ist die in Oracle db verwendete Programmiersprache. Postgres hat PL/pgSQL. –

Antwort

3

Sie können es insert . . . select mit tun:

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; 

Hinweis: Sie müssen nicht die subselect für die concat().

+0

Danke Gordon! Das hat mir sehr geholfen! – Simon