¿Qué forma es más óptima al insertar datos en una tabla de la base de datos addnew, update o insert?

He estado viendo distintos códigos fuentes y me he encontrado que al momento de insertar datos en la base de datos la mayoría usa un método que es .addnew .update, y otros muy pocos utilizan la sentencia sql insert into.
Ahora te pregunto, cual de las dos formas es más optima, tomando en cuenta que al mismo tiempo dos usuarios pueden insertar datos en la misma tabla.

4 Respuestas

Respuesta
1
El utilizar .addNew o .update implica tener un objeto adicional, en este caso un recordset, para insertar o actualizar datos. Además, si no me equivoco, es necesario realizar una consulta primero a la base de datos para abrir el recordset, y luego se puede proceder con el .addNew, lo que lo hace aún más lento. Si utilizas sólo la conexión, te evitas tener que abrir, actualizar y cerrar un recordset adicional, utilizando así menos recursos y acelerando un poco las transacciones contra la base de datos. Ahora, el costo de esta rapidez se traduce en la dificultad para mantener el código, ya que las sentencias SQL pueden verse muy "desordenadas" cuando se mezclan con código de programación. Para esto, generalmente se utilizan procedimientos almacenados, los que aceleran aún más las consultas y transacciones, la mantención es relativamente más simple, ordenan tu código y, al igual que las sentencias SQL, pueden ser llamados sólo con la conexión, como por ejemplo:
CNX.execute "exec sp_InsertaDatos " & Dato1 & ", " & Dato2
Donde CNX es una conexión abierta, y sp_InsertaDatos es un procedimiento almacenado que acepta dos parámetros.
En resumen, si es posible evitar el uso de recordset, trata de hacerlo, pero nunca olvides que después alguien tendrá que volver a leer tu código para mantenerlo!
Ojalá te sirva!
TCV
Ok, entiendo, buscare información acerca de ese procedimiento, ahora referente al .addnew y al insert into, por ejemplo, ¿el insert into me garantiza la integridad de los datos cuando dos o más usuarios insertan datos al mismo tiempo? ¿el .addnew hace esto?
OK. Lo que tu planteas se llama "Bloqueo de Seguridad". Es cuando un usuario "toma" una tabla (o un registro, como es el caso de SQL Server por defecto) en forma exclusiva, y no permite que otro usuario actualice el objeto. Esto sucede cuando utilizas el .addNew o el .update, es decir, utilizando recordsets. Para ser sincero, personalmente nuncahe utilizado estos recursos, ya que los sistemas que he desarrollado son generalmente para Intranets, lo que hace que las probabilidades de que se produzca una "colisión" sean muy remotas. La verdad, es que el método del recordset es más seguro en este aspecto, y si deseas asegurar consistencia, debes hacerlo con este método. La forma en que abres el recordset, es la forma como la tabla se tomará. Al menos en ADO, un recordset tiene varias formas de abrirse, dependiendo del LockType, el CursorType, y ciertas otras opciones que, para serte sincero nuevamente, no las he utilizado nunca. Te recomiendo que investigues acerca del LockType de los recordsets ADO, que son los que proveen consistencia al momento de accesar una base de datos. Además, te recomiendo que leas sobre las características de SQL Server para asegurar consistencia de forma independiente, y los bloqueos de tablas que se producen automáticamente (a veces, pueden transformarse en una verdadera molestia!). Existe otro punto más, que generalmente surge en un desarrollo cliente-servidor, y son los "registros fantasmas". Este fenómeno se produce cuando dos clientes realizan la misma consulta sobre la base de datos. Uno de ellos elimina un registro, pero el segundo todavía lo tiene desplegado en su pantalla. Si el segundo cliente realiza una actualización completa de la tabla, el registro volverá a ser ingresado, y la acción realizada por el primer cliente se perderá en el limbo!. También existen formas de evitar este tipo de problemas.
Ojalá te sirva!
TCV
Respuesta
1
Por lo que se, se eta dejando de usar el addnew, update ...
Ademas, estos métodos funcionan bien con ado
Yo te recomendaría que uses las sentencias de sql ya que te van a servir el día que programes en visual basic, en php, en jsp, con cualquier tipo de base de datos
Respuesta
1
Son dos formas de hacer lo mismo, la ventaja de hacerlo en SQL es que tienes más felxibilidad, puedes hacer insert masivos y delete masivos, cosa que de la otra forma tienes que ir de uno en uno.
Yo personalmente utilizo siempre SQL.
Respuesta
Pues, la verdad es que no se que decirte. Yo creo que eso va por barrios.
A mi, personalmente, me da mejor espina lo de insert to ya que lo manda todo en un bloque y a la misma vez.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas