ALTER PUBLICATION — cambiar la definición de una publicación
ALTER PUBLICATIONnameADDpublication_object[, ...] ALTER PUBLICATIONnameSETpublication_object[, ...] ALTER PUBLICATIONnameDROPpublication_drop_object[, ...] ALTER PUBLICATIONnameSET (publication_parameter[=value] [, ... ] ) ALTER PUBLICATIONnameOWNER TO {new_owner| CURRENT_ROLE | CURRENT_USER | SESSION_USER } ALTER PUBLICATIONnameRENAME TOnew_namedondepublication_objectes uno de: TABLEtable_and_columns[, ... ] TABLES IN SCHEMA {schema_name| CURRENT_SCHEMA } [, ... ] ypublication_drop_objectes uno de: TABLE [ ONLY ]table_name[ * ] [, ... ] TABLES IN SCHEMA {schema_name| CURRENT_SCHEMA } [, ... ] ytable_and_columnses: [ ONLY ]table_name[ * ] [ (column_name[, ... ] ) ] [ WHERE (expression) ]
El comando ALTER PUBLICATION puede cambiar los atributos
de una publicación.
Las tres primeras variantes cambian qué tablas/esquemas forman parte de la
publicación. La cláusula SET reemplazará la lista de
tablas/esquemas en la publicación con la lista especificada; se eliminarán las
tablas/esquemas existentes que estaban presentes en la publicación. Las
cláusulas ADD y DROP agregarán y
eliminarán una o más tablas/esquemas de la publicación. Ten en cuenta que agregar
tablas/esquemas a una publicación a la que ya se está suscrito requerirá una
acción
ALTER SUBSCRIPTION ... REFRESH PUBLICATION en el lado del
suscriptor para que surta efecto. Ten en cuenta también que
DROP TABLES IN SCHEMA no eliminará ninguna tabla del esquema
que se haya especificado utilizando
FOR TABLE/
ADD TABLE.
La cuarta variante de este comando listada en la sinopsis puede cambiar todas las propiedades de la publicación especificadas en CREATE PUBLICATION. Las propiedades que no se mencionan en el comando conservan su configuración anterior.
Las variantes restantes cambian el propietario y el nombre de la publicación.
Debes ser el propietario de la publicación para usar ALTER PUBLICATION.
Agregar una tabla a una publicación requiere además ser el propietario de esa tabla.
Las cláusulas ADD TABLES IN SCHEMA y
SET TABLES IN SCHEMA en una publicación requieren que el
usuario que lo invoque sea un superusuario.
Para cambiar el propietario, debes ser capaz de hacer SET ROLE al
nuevo rol propietario, y ese rol debe tener el privilegio CREATE
en la base de datos.
Además, el nuevo propietario de una publicación
FOR ALL TABLES
o FOR TABLES IN SCHEMA
debe ser un superusuario. Sin embargo, un superusuario puede
cambiar la propiedad de una publicación independientemente de estas restricciones.
No se admite agregar/configurar ningún esquema cuando la publicación también publica una tabla con una lista de columnas, y viceversa.
nameEl nombre de una publicación existente cuya definición se va a modificar.
table_name
El nombre de una tabla existente. Si se especifica ONLY antes del
nombre de la tabla, solo esa tabla se ve afectada. Si no se especifica
ONLY, la tabla y todas sus tablas descendientes (si las hay) se
ven afectadas. Opcionalmente, se puede especificar * después del
nombre de la tabla para indicar explícitamente que se incluyen las tablas descendientes.
Opcionalmente, se puede especificar una lista de columnas. Consulta CREATE PUBLICATION para obtener más detalles. Ten en cuenta que no se admite una suscripción que tenga varias publicaciones en las que la misma tabla se haya publicado con diferentes listas de columnas. Consulta Warning: Combining Column Lists from Multiple Publications para ver los detalles de los problemas potenciales al modificar las listas de columnas.
Si se especifica la cláusula opcional WHERE, las filas para
las cuales la expression
se evalúa como false o null no se publicarán. Ten en cuenta que se requieren
paréntesis alrededor de la expresión. La
expression se evalúa con
el rol utilizado para la conexión de replicación.
schema_nameEl nombre de un esquema existente.
SET ( publication_parameter [= value] [, ... ] )Esta cláusula modifica los parámetros de la publicación establecidos originalmente por CREATE PUBLICATION. Consulta allí para obtener más información.
Modificar el parámetro publish_via_partition_root puede
provocar pérdida o duplicación de datos en el suscriptor porque cambia
la identidad y el esquema de las tablas publicadas. Ten en cuenta que esto sucede solo
cuando se especifica una tabla raíz de partición como destino de replicación.
Este problema se puede evitar absteniéndose de modificar las tablas de partición hoja
después del comando ALTER PUBLICATION ... SET hasta que se
ejecute ALTER SUBSCRIPTION ... REFRESH PUBLICATION
y realizando la actualización únicamente con la opción copy_data = off.
new_ownerEl nombre de usuario del nuevo propietario de la publicación.
new_nameEl nuevo nombre para la publicación.
Cambiar la publicación para publicar solo eliminaciones y actualizaciones:
ALTER PUBLICATION noinsert SET (publish = 'update, delete');
Agregar algunas tablas a la publicación:
ALTER PUBLICATION mypublication ADD TABLE users (user_id, firstname), departments;
Cambiar el conjunto de columnas publicadas para una tabla:
ALTER PUBLICATION mypublication SET TABLE users (user_id, firstname, lastname), TABLE departments;
Agregar los esquemas marketing y
sales a la publicación
sales_publication:
ALTER PUBLICATION sales_publication ADD TABLES IN SCHEMA marketing, sales;
Agregar las tablas users,
departments y el esquema
production a la publicación
production_publication:
ALTER PUBLICATION production_publication ADD TABLE users, departments, TABLES IN SCHEMA production;
ALTER PUBLICATION es una extensión de PostgreSQL.