Hola, estoy usando postgres 12. Llevo unos días aprendiendo.
Quería saber si es posible escribir en la etapa CREATE TABLE: IF column_x is NULL, return 'alternative value' ?
Esta es mi tabla actual:
CREATE OR REPLACE FUNCTION update_modified_column() RETURNS TRIGGER AS $$ BEGIN NEW.modified = NOW(); RETURN NEW; END; $$ LANGUAGE plpgsql; CREATE TABLE example ( id BIGSERIAL NOT NULL PRIMARY KEY, entry_name VARCHAR(150) NOT NULL UNIQUE, about VARCHAR(1500), org_type VARCHAR(150), category VARCHAR(150), sub_categories VARCHAR(300), website_link VARCHAR(300) UNIQUE, membership VARCHAR(100), instagram VARCHAR(150) UNIQUE, twitter VARCHAR(150) UNIQUE, link_lists VARCHAR(100) UNIQUE, facebook VARCHAR(200) UNIQUE, youtube VARCHAR(200) UNIQUE, podcast VARCHAR(200) UNIQUE, tags VARCHAR(150), created TIMESTAMPTZ NOT NULL DEFAULT NOW(), modified TIMESTAMPTZ NOT NULL DEFAULT NOW() ); CREATE TRIGGER set_timestamp BEFORE UPDATE ON bbdb FOR EACH ROW EXECUTE PROCEDURE update_modified_column();Entonces, en este escenario, me gustaría que cualquier entrada nula en 'acerca de' y 'website_link' diga 'Próximamente' y que todas las entradas nulas de las redes sociales digan simplemente 'Ninguna'. ¿Supongo que mi restricción ÚNICA no permitiría esto? (Los tengo para evitar duplicados de entradas en caso de que el 'nombre_entrada' se envíe con variaciones).
Gracias por cualquier ayuda.
Como definió todas esas columnas como UNIQUE , puede tener múltiples valores null , pero no puede tener dos filas con el mismo valor 'Coming soon' .
Pero puede reemplazar esos valores NULL durante la recuperación, con el reemplazo deseado:
select id, coalesce(website_link, 'Coming Soon') as website_link, coalesce(about, 'Coming soon') as about, coalesce(twitter, 'None') as twitter, coalesce(instgram, 'None') as instagram from the_table;Si no desea escribir eso cada vez, cree una vista que lo haga por usted.