Mysql
 sql >> Baza danych >  >> RDS >> Mysql

PostgreSQL:poprawna próbka przypisania zmiennej?

W Postgres SQL nie ma zmiennych (możesz używać zmiennych tylko w językach proceduralnych).

Użyj RETURNING w WITH zapytanie:

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;

Alternatywnie możesz użyć niestandardowych parametrów konfiguracyjnych w sposób opisany w tym poście .

Utwórz dwie funkcje:

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 $$;

Za pomocą funkcji możesz symulować zmienne, jak w przykładzie:

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;

Z pewnością nie jest to przykład dobrego kodu. Szczególnie kłopotliwa jest konieczność rzutowania. Jednak konwersja może odbywać się półautomatycznie.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Obrazy w MySQL

  2. Liczba kolumn MySQL nie odpowiada liczbie wartości w wierszu 1

  3. Jak włączyć automatyczne ponowne łączenie klienta MySQL z MySQLdb?

  4. Jak zdefiniować obsługę wartości null w sortowaniach Spring Data JPA?

  5. Jak odjąć uprawnienia w MySQL