2
respostas

ERROR: CREATE DATABASE cannot be executed from a function or multi-command string

Pessoal boa noite, estou criando um script no postgresql, assistir a aula do básico e me empolguei rsrsrsrsr alguém pode me ajudar com esse erro eu creio que tenha que informar o owner do banco de dados, porta, senha obrigado. ERROR: CREATE DATABASE cannot be executed from a function or multi-command string

/*inicio do script*/
DO $$
declare

begin
RAISE NOTICE 'Verificando banco de dados';

RAISE NOTICE 'Criando banco de dados';
CREATE DATABASE escola;


RAISE NOTICE 'CRIANDO TABELAS';
RAISE NOTICE 'CRIANDO TABELA ALUNO NOVO';
SELECT escola;
create table ALUNONOVO(
    id serial primary key,
    nome varchar(100) not null);
 RAISE NOTICE 'CRIANDO TABELA TURMA NOVA';
 create table TURMANOVA(
      id serial primary key,
     id_aluno serial,
     nome varchar(100),
FOREIGN KEY (id_aluno) 
REFERENCES alunoNovo(id));

 RAISE NOTICE 'INSERINDO REGISTROS ALUNONOVO';
 INSERT INTO ALUNONOVO(NOME) VALUES('aluno1'),('aluno2'),('aluno3');
 RAISE NOTICE 'INSERINDO REGISTROS TURMANOVA';
 INSERT INTO TURMANOVA(NOME,ID_ALUNO) VALUES('BANCO DE DADOS',2),('SALÃO DE BELEZA',1),('DESENVOLVEDOR FRONT-END',3);
 RAISE NOTICE 'SCRIPT FINALIZADO COM SUCESSO!';
end $$;
/*fim do script/
2 respostas

É sempre legal quando a gente se empolga!!

No postgre a gente não pode criar um banco de dados dentro de uma transação (transacoes estao ligadas a banco de dados). Voce pode fazer o create database fora, na unha, ou usar o create schema dentro de um database ja criado. o que acha?

Perfeito, obrigado pela atenção eu separei assim um scripts com create tables; e outros scripts com insert, chamei a função \i local+insert.sql e os creates tables criei na una mesmo :D.

Obrigado :D