Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

PostgreSQL:contoh penetapan variabel yang valid?

Tidak ada variabel di Postgres SQL (Anda hanya dapat menggunakan variabel dalam bahasa prosedural).

Gunakan RETURNING di WITH permintaan:

WITH insert_cat AS (
    INSERT INTO main_categorie (description)
    VALUES ('Verbe normal')
    RETURNING id
),
insert_mot AS (
    INSERT INTO main_mot (txt,im,date_c,date_v_d,date_l)
    VALUES ('je m''abaisse',1,NOW(),NOW(),NOW())
    RETURNING id
)
INSERT INTO main_motcategorie (mot_id,categorie_id) 
SELECT m.id, c.id
FROM insert_mot m, insert_cat c;

Sebagai alternatif, Anda dapat menggunakan parameter konfigurasi khusus dengan cara yang dijelaskan dalam postingan ini .

Buat dua fungsi:

create or replace function set_var (name text, value text)
returns void language plpgsql as $$
begin
    execute format('set mysql.%s to %s', name, value);
end $$;

create or replace function get_var (name text)
returns text language plpgsql as $$
declare
    rslt text;
begin
    execute format('select current_setting(''mysql.%s'')', name) into rslt;
    return rslt;
end $$;

Dengan fungsi, Anda dapat mensimulasikan variabel, seperti pada contoh:

INSERT INTO main_categorie (description)
VALUES ('Verbe normal');

SELECT set_var('PRONOMINAL', (SELECT currval('main_categorie_id_seq')::text));

INSERT INTO main_mot (txt,im,date_c,date_v_d,date_l)
VALUES ('je m''abaisse',1,NOW(),NOW(),NOW());

SELECT set_var('verbe_149', (SELECT currval('main_mot_id_seq')::text));

INSERT INTO main_motcategorie (mot_id,categorie_id) 
SELECT get_var('verbe_149')::int, get_var('PRONOMINAL')::int;

Ini tentu bukan contoh kode yang baik. Terutama kebutuhan casting itu merepotkan. Namun, konversi dapat dilakukan secara semi-otomatis.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Mysql:variabel tidak dikenal, tidak dapat menjalankan aplikasi mysql apa pun, sepertinya tidak ada hubungannya dengan my.cnf

  2. Apakah mysqli_real_escape_string cukup untuk menghindari injeksi SQL atau serangan SQL lainnya?

  3. PHP MySQL PDO:cara mempertahankan angka nol di depan kolom zerofill int

  4. Cara Mengekspor SQL Query ke TXT Menggunakan Command Line

  5. MySQL secara otomatis menyisipkan baris ke table2 pada sisipan ke table1