sql >> Database >  >> RDS >> PostgreSQL

hoe een gebeurtenistrigger te maken voor het maken van een tabel of selecteer in

dit is mijn code, het voldoet aan mijn behoeften

code:

CREATE OR REPLACE FUNCTION trg_create_table_func()
RETURNS event_trigger
LANGUAGE plpgsql
AS $$
DECLARE
    obj record;    
BEGIN
  FOR obj IN SELECT * FROM pg_event_trigger_ddl_commands() WHERE command_tag in ('SELECT INTO','CREATE TABLE','CREATE TABLE AS')
  LOOP
        if   obj.object_identity !~ 'public.temp_'  
        THEN
        raise EXCEPTION 'The table name must begin with temp_';
        end if;
        END LOOP;
END;
$$;

CREATE EVENT TRIGGER trg_create_table ON ddl_command_end
WHEN TAG IN ('SELECT INTO','CREATE TABLE','CREATE TABLE AS')
EXECUTE PROCEDURE trg_create_table_func();

uit records

[Err] FOUT:De tabelnaam moet beginnen met temp_CONTEXT:PL/pgSQL-functie trg_create_table_func() regel 10 bij RAISE

het is cool ~



  1. SQLSTATE[42S02]:Basistabel of weergave niet gevonden:1146 Tabel X bestaat niet

  2. Configureer een `DataSource` om verbinding te maken met een beheerde Postgres-server op Digital Ocean met SSL/TLS-codering

  3. PostgreSQL - Gegevens verwijderen die ouder zijn dan een uur en vervolgens nieuwe gegevens invoegen in dezelfde tabel

  4. mysql-tijdstempel converteren naar de werkelijke datum en tijd?