Mysql
 sql >> база данни >  >> RDS >> Mysql

PostgreSQL:валидна извадка за присвояване на променлива?

В Postgres SQL няма променливи (можете да използвате променливи само в процедурни езици).

Използвайте RETURNING в WITH заявка:

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;

Като алтернатива можете да използвате персонализирани параметри за конфигурация по начина, описан в тази публикация .

Създайте две функции:

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

С функциите можете да симулирате променливи, като в примера:

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;

Това със сигурност не е пример за добър код. По-специално необходимостта от кастинг е обезпокоителна. Преобразуването обаче може да се извърши полуавтоматично.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Проблеми при вмъкването на utf-8 низ в база данни и след това извеждането му на уеб страница

  2. MySQL #1364 - Полето 'column_name' няма стойност по подразбиране - Не може да се вмъкне в DB

  3. ГРЕШКА:Грешка 1005:Не може да се създаде таблица (errno:121)

  4. Ruby, Rails:mysql2 gem, някой използва ли този скъпоценен камък? Стабилен ли е?

  5. Промяна на следващата падаща стойност с предишно падащо меню при промяна