Saltar al contenido

Cómo crear un primario autoincrementable key con escritor dinámico en FME

Nuestros investigadores estrellas agotaron sus depósitos de café, por su búsqueda noche y día por la resolución, hasta que Marisol encontró la respuesta en GitLab así que ahora la compartimos con nosotros.

Solución:

No tengo experiencia con MSSQL pero para PostgreSQL funciona seleccionando el tipo de datos serial y el índice PrimaryKey. Ver captura de pantalla.

Sospecho que el tipo de datos debe ser una identidad con el índice PrimaryKey. Consulte también esta documentación.

Parámetros de FeatureWriter

Gran fanático de StackExchange, pero tendrá más posibilidades de obtener una buena respuesta en el foro de Safe Software. Mucho conocimiento y actividad.

Creo que @buddiebubba tiene razón. Así es como se ve mi definición de SQL Server:

ingrese la descripción de la imagen aquí

Tenga en cuenta que es una traducción dinámica. El Tipo de característica también tiene un parámetro como este:

ingrese la descripción de la imagen aquí

Al establecer eso en NO, provoco que SQL Server incremente eso attribute, lo que hace muy bien. Sin embargo, recibo un mensaje de advertencia en el registro de FME:

Microsoft SQL Server Spatial Writer: 
Data type `identity' of attribute `NewMarkID' of feature type `Parks' 
is not supported for writing.  Attribute will be ignored by writer

Creo que debe ser solo una mala advertencia (o simplemente mal redactada). no veo que el attribute se ignora Todo me parece bien.

Ahora, si quiero leer de una tabla SQL y volver a escribir los datos, entonces establecería el parámetro anterior en SÍ. Luego, los valores existentes se vuelven a escribir. A las características adicionales se les puede dar una identificación con el contador y se incrementarán desde la identificación máxima anterior, creo.

NÓTESE BIEN: Presenté una solicitud para actualizar el mensaje de advertencia, para que no sea tan confuso. Es PR#81236

Editar: la respuesta de buddiebubba es mejor.

Si usa un tipo de escritor dinámico, no es posible simplemente poner serial allí ya que el esquema está basado en características.

La forma más fácil de hacer esto que encontré fue usar la función SQL To Run After Write:
ingrese la descripción de la imagen aquí

Para postgresql el código sería:

ALTER TABLE testing
ADD COLUMN pkid serial;
alter table testing add CONSTRAINT pk_testing PRIMARY KEY (pkid);

Estoy seguro de que hay un equivalente para el servidor SQL. Sería algo como:

ALTER TABLE Parent MODIFY Identifier smallint(10) AUTO_INCREMENT;

si se debe confiar en Internet.

Sección de Reseñas y Valoraciones

Recuerda algo, que tienes autorización de decir si hallaste tu incógnita en el momento justo.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *