Syntax error at or near create

Syntax error at or near create

Пожалуйста, почему этот код не работает?

              nodelogin-# CREATE TABLE user

              nodelogin-# (id BIGSERIAL PRIMARY KEY NOT NULL,

              nodelogin(# name VARCHAR(200) NOT NULL,

              nodelogin(# email VARCHAR(200) NOT NULL,

              nodelogin(# password VARCHAR(200) NOT NULL,

              nodelogin(# UNIQUE (email));              

              ERROR: syntax error at or near “CREATE”

              LINE 2: CREATE TABLE user

Ответ

user это зарезервированное ключевое слово в PostgreSQL. В принципе, PostgreSQL не нравится название. Если вы попробуете другое имя (user2, user_, comp_user), оно должно работать

syntax error at or near create when creating a function

Итак, я впервые создаю функцию в PostgreSQL, и у меня возникла проблема с синтаксисом

CREATE OR REPLACE FUNCTION uni() RETURNS INTEGER AS $$

DECLARE

  mviews RECORD;

BEGIN

  FOR mviews IN SELECT id,universite_adi FROM proaca.a LOOP

  INSERT INTO proaca.universite (id,ad,ulke_id)

  VALUES (mviews.id,mviews.universite_adi,1)

  END LOOP;

  RETURN 1;

END;

$$ LANGUAGE plpgsql;

ERROR: syntax error at or near “create”

Line 2: $BODY$CREATE OR REPLACE FUNCTION uni() RETURNS INTEGER AS $$

Ответ

Вам не нужен этот цикл. Просто обычный sql

create or replace function uni()

returns integer as $$

  insert into proaca.universite (id, ad, ulke_id)

  select id, universite_adi, 1

  from proaca.a

  returning 1

  ;

$$ language sql;

Error when creating a stored procedure in postgreSQL-10

Я не смог заставить свою первую хранимую процедуру работать, поэтому я скопировал этот пример из руководства:

CREATE PROCEDURE insert_data(a integer, b integer)

LANGUAGE SQL

AS $$

INSERT INTO tbl VALUES (a);

INSERT INTO tbl VALUES (b);

$$;

CALL insert_data(1, 2);

и я получаю следующее сообщение об ошибке:

ERROR: syntax error at or near “PROCEDURE”

LINE 1: CREATE PROCEDURE insert_data(a integer, b integer)

  ^

SQL state: 42601

Character: 8

Что я делаю не так?

Я запускаю базу данных на localhost, работая от имени пользователя admin. Я установил его сам. Процесс установки завершен без ошибок, и я могу создавать таблицы, функции, триггеры и т. Д.

Ответ

Как упоминалось в комментариях, в PostgreSQL-10 нет хранимых процедур. То же самое относится и к более ранним версиям.

Альтернативы обходного пути:

  • Обновление до версии 11 или более поздней
  • Используйте функцию

 

Как в PostegreSQL создать триггер в запросе без ошибок? вот таких ниже в описании, гуглил не нашёл ничего.

Ошибка SQL:

ERROR: syntax error at or near “CREATE”

LINE 18: CREATE trigger wp_users_uuid_trigger

^

В операторе:

ALTER TABLE wp_users

ADD COLUMN uuid CHAR(36) UNIQUE DEFAULT NULL,

ADD COLUMN accessToken CHAR(32) DEFAULT NULL,

ADD COLUMN serverID VARCHAR(41) DEFAULT NULL;

CREATE EXTENSION IF NOT EXISTS “uuid-ossp”;

CREATE OR REPLACE FUNCTION public.wp_users_uuid_trigger_func()

RETURNS trigger

LANGUAGE plpgsql

AS $function$

BEGIN

new.uuid = (SELECT uuid_generate_v4());

return new;

END;

$function$

CREATE trigger wp_users_uuid_trigger

BEFORE INSERT ON wp_users

FOR EACH ROW

EXECUTE PROCEDURE wp_users_uuid_trigger_func();

UPDATE wp_users SET uuid=(SELECT uuid_generate_v4()) WHERE uuid IS NULL;

Ответ

Точки с запятой нет после $function$ и перед CREATE trigger…

Наталья Петрова
Оцените автора
Новости города Салавата
Добавить комментарий

Adblock
detector