Quiero crear una secuencia para cada fila creada en la cuenta de la tabla, como os_1, os_2, etc.
¿Cómo puedo obtener la identificación de esta nueva fila e insertarla en el nombre de la secuencia?
CREATE OR REPLACE FUNCTION public.create_os_seq() RETURNS TRIGGER AS $$ #variable_conflict use_variable BEGIN --CREATE SEQUENCE seqname; EXECUTE format('CREATE SEQUENCE os_', NEW.id); return NEW; END; $$ LANGUAGE plpgsql; CREATE TRIGGER create_os_seq AFTER INSERT ON account FOR EACH ROW EXECUTE PROCEDURE create_os_seq();cuenta de mesa
id INT AUTO_INCREMENT nane VARCHARDespués de crear una secuencia pondré su número en la tabla del sistema operativo
sistema operativo de mesa
id INT account_id INTA partir de su pregunta, asumo que desea ocuparse de los valores autoincrementales. Postgres usa el atajo SERIAL en lugar de AUTO_INCREMENT , simplemente cree una tabla como:
CREATE TABLE so79 (id bigserial primary key, col text); Eso creará automáticamente una secuencia para usted y asignará su valor como predeterminado para la identificación de la columna. Básicamente lo hará algo como AUTO_INCREMENT . No tiene que usar el disparador para incrementar los valores...
No hay forma de que crear una secuencia para cada fila sea una buena idea. En su lugar, díganos lo que está tratando de hacer.
Supongo que necesita un indicador de línea de flotación, un punto alto que pretende incrementar en alguna acción. Solo usa un número entero.
CREATE TABLE foo ( foo_id serial, max_seen int ); Ahora puede hacer lo que sea con disparadores en otras tablas y demás para incrementar max_seen .