Modificar registros con DML
Objetivos de aprendizaje
Después de completar esta unidad, podrá:
- Comprender cómo utilizar la Query Grid en Developer Console para manipular registros de datos directamente.
- Comprender cómo utilizar DML para que los datos persistan en la base de datos.
- Identificar dos maneras de redactar comandos DML.
Gestionar datos en Developer Console
Hasta ahora vimos cómo utilizar Developer Console para consultar datos utilizando SOQL y SOSL. Lo que probablemente no advirtió fue que el panel Query Results que se muestra en Developer Console no solo muestra los resultados, sino que también funciona como una tabla de consulta. Puede hacer clic en la tabla de resultados y utilizar los botones debajo de la tabla para insertar, actualizar y eliminar datos.
Vamos a probarla.
- En Configuración, seleccione Su nombre > Developer Console para abrir Developer Console.
- En Developer Console, haga clic en la ficha Query Editor en el panel inferior.
- Elimine el código existente e inserte el siguiente fragmento de código:
SELECT Id, Name, Industry FROM Account
- Haga clic en Execute (Ejecutar). Los resultados de la consulta muestran todas las cuentas de la organización, junto con un conteo del total de filas. Observe lo que es este valor.
- Haga clic en Insert Row (Insertar fila). Se agrega una nueva fila en la parte superior de la tabla.
- Haga doble clic en la nueva fila para ingresar un nombre e industria, pero deje el valor de Id. en blanco.
- Haga clic en Save Rows (Guardar filas). Observe que se muestra un valor automáticamente en la columna de Id. Recuerde, el Id. es la clave principal y ese valor está generado por el sistema. Tenga en cuenta también que el total de filas mostrado es aún el valor original.
- Haga clic en Refresh Grid (Actualizar tabla). ¿Se dio cuenta que el conteo total de filas aumentó en una unidad? No es una herramientita mala, ¿verdad?
Como desarrolladores, sabemos que a veces necesita gestionar los datos directamente y quisimos facilitarle este aspecto el máximo posible. Pensamos que es mucho mejor que ingresar una declaración INSERT, UPDATE o DELETE.
También puede utilizar los botones de la parte inferior derecha de los resultados de la consulta para acceder a los registros de Salesforce directamente. No lo dude y pruébelo.
¿Qué es DML?
Como aprendió en la primera unidad, Salesforce utiliza SOQL para consultar datos, pero cuando llega el momento de gestionar los datos, se utiliza DML en su lugar.
Como desarrollador de .NET, utiliza SQL principalmente para consultar y gestionar datos, por lo que parecería extraño utilizar otro lenguaje. No obstante, pensamos que encontrará el trabajo con comandos DML en Salesforce mucho más sencillo que con los equivalentes SQL.
Debido a que Force.com está tan estrechamente integrado, puede ir directamente a la tarea de manipular sus datos sin preocuparse de gestionar una fuente de datos. Esa es una razón por la que es tan fácil trabajar con DML.
Declaraciones DML
Consulte la tabla que encontrará a continuación para ver qué declaraciones DML están disponibles. Algunas probablemente le serán familiares, y funcionan de una forma bastante parecida a lo que podría esperar. Consulte la Guía del desarrollador para obtener más información.
Declaración | Descripción |
---|---|
insert | Inserta un nuevo registro. |
update | Actualiza un registro existente. |
upsert | Esta es una operación especial que crea nuevos registros y los actualiza en una única declaración. Utiliza un campo especificado para determinar la presencia de objetos existentes, o el campo de Id. si no se especifica ningún campo. |
delete | Elimina un registro existente. |
undelete | Restaura uno o más registros existentes desde la papelera de reciclaje. |
merge | Esta es otra operación especial que puede combinar hasta tres registros del mismo tipo de objeto en uno de los registros. Luego eliminará los otros registros y volverá a asignar como principal cualquier registro relacionado. |
Dos formas de ejecutar DML
En Apex, puede ejecutar declaraciones DML de dos maneras.
- Utilizando la declaración en sí. Ya vio este método en la unidad sobre SOSL en la que insertamos datos de Account y Contact. Este método es el más sencillo. En caso de que no lo recuerde, aquí tenemos algo de código de la unidad sobre SOSL. Una única cuenta se insertó empleando la declaración insert de DML.
// Add Account Account acct = new Account( Name='Test Account', Phone='(225)555-8989', NumberOfEmployees=10, BillingCity='Baton Rouge'); insert acct;
- Utilizando métodos de la clase Database. La ventaja de utilizar el método de la clase Database es que dispone de acceso al parámetro opcional
allOrNone
para especificar si la operación puede ser correcta parcialmente. Cuando este parámetro se establece en false, si se produce un error en un conjunto parcial de registros, se envían los registros que se procesaron correctamente. Se devuelven los errores de los registros con fallo. Además, no se producen excepciones con la opción de validez parcial. Por ejemplo, para crear una cuenta con el parámetroallOrNone
establecido en false y devolver la información de operación correcta o fallida en una tabla, vería lo siguiente.// Add Account Account acct = new Account( Name='Test Account', Phone='(225)555-8989', NumberOfEmployees=10, BillingCity='Baton Rouge'); Database.SaveResult[] results = Database.insert(acct, false);
Más información
De forma predeterminada, el parámetro allOrNone es true, lo que significa que el método de base de datos se comporta como su homólogo DML y producirá una excepción si se detecta un error. Consulte los documentos oficiales para obtener más información.
Si desea convertirse en una estrella de DML, complete el módulo Fundamentos y base de datos de Apex. Contiene más información sobre cómo insertar registros procesados correctamente de forma parcial y cómo insertar registros relacionados.