Editar datos de una geodatabase no versionada en PostgreSQL con SQL
Puede utilizar SQL para actualizar, insertar datos y eliminar datos de tablas no versionadas en la geodatabase si no participan en el comportamiento de la geodatabase. Consulte ¿Qué tipo de datos puede editarse con SQL? para obtener información sobre los tipos de datos y comportamiento de la base de datos que no puede editar con SQL.
Todos los datos que se registran con la geodatabase tiene una columna (fila Id.) de Id. de objeto mantenida por el sistema, única y que no es nula. Cuando utiliza SQL para insertar registros en las tablas no versionadas en la geodatabase, debe proporcionar un valor único para el Id. de objeto.
Para obtener esta información, haga una consulta a la tabla sde_table_registry del sistema de ArcSDE para obtener el Id. de registro de la tabla en la cual desea insertar un registro. Una vez que tiene el Id. de registro, puede identificar la tabla i correspondiente de la tabla porque las tablas i están asociadas con la tabla de negocios a través del Id. de registro. La tabla i se almacena en el esquema del usuario que es propietario de la tabla correspondiente.
Llame la función i<registration_id>_get_ids en la declaración INSERT para generar el próximo Id. de objeto para el registro insertado.
-
Inicie sesión en la base de datos desde un editor de SQL como psql.
Asegúrese de iniciar sesión en la base de datos como un usuario que tiene permiso para editar los datos.
-
Haga una consulta en la tabla sde_table_registry para determinar el Id. de registro de la tabla de negocios en la cual quiere insertar un registro.
SELECT registration_id FROM sde.sde_table_registry WHERE table_name = 'outbreak' and owner = 'hmoot'; registration_id 49
El Id. de registro para la tabla hmoot.outbreak es 49.
-
Seleccione un Id. de la tabla i49 con la función i49_get_ids(2,1). Puede anidarse en la declaración INSERT, como se muestra en el siguiente ejemplo:
En este ejemplo, la columna site_id es el Id. del objeto.
INSERT INTO hmoot.outbreak (site_id,med_code,num_affected,shape) VALUES ((SELECT o_base_id FROM hmoot.i49_get_ids(2,1)), 'v-22a', 3, ST_Point('point (12 36))', 12);
O_base_id es el Id. de objeto que se devuelve. El 2 en la función es una constante que indica que usted quiere un valor de Id. de objeto. No use ningún otro valor en este lugar. El 1 indica que desea un Id. de objeto de la tabla i49. Sólo necesita una Id. de objeto porque está actualizando sólo un registro.