buenos dias compañeros
una pregunta, alguien me puede ayudar o dar información como buscar sobre START TRANSACTION, COMMIT, and ROLLBACK en postgres
| |||
Respuesta: commit en postgres vi este ejemplo de begin, commit y rollback, pero.. hay algo que no entiendo BEGIN : Comienza la transaccion RollBack: Retrocede la transaccion por cualquier error COMMIT: Finaliza la transaccion hasta creo que es asi. ejemplo: BEGIN; UPDATE accounts SET balance = balance - 100.00 WHERE name = 'Alice'; SAVEPOINT my_savepoint; UPDATE accounts SET balance = balance + 100.00 WHERE name = 'Bob'; -- oops ... forget that and use Wally's account ROLLBACK TO my_savepoint; UPDATE accounts SET balance = balance + 100.00 WHERE name = 'Wally'; COMMIT; hay una funcion que se llama SAVEPOINT me imagino que es "guardar punto", esto hay que colocarlo cada vez que se hace una consulta, actualizacion, o inserccion, por que aca solo lo muestra en un solo lado, ahh y tambien hay que colocar el rollback la cantidad de veces que ponemos los savepoint?? gracias desde ya |
| ||||
Respuesta: commit en postgres Imagina que administras una base de datos de millones de datos. Un update a un campo te puede dañar toda la información sin posibilidad de recuperarla. Para hacer cambios a la base de datos se debe ser muy cuidadoso y tener las herramientas para recuperarse de posibles daños. Lo que dices es exactamente lo que es. begin; Es el inicio de una transacción. Con solo poner esta clausula es posible recuperar errores que puedas sufrir. savepoint; Con esta sentencia haces un commit hasta el punto que estes seguro no tienes errores. La diferencia con commit es que no se finaliza la transacción. rollback; Deshace todos los cambios que se hayan realizado desde la sentencia begin. o hasta donde hayas confirmado con savepoint. commit; Confirma y termina la transacción con los cambios establecidos. Con un ejemplo:
Código sql:
Ver original Hemos cambiado la palabra hoja por papel. Todo anda muy bien. Entonces vamos a confirmar hasta este punto que todo va bien haciendo uso de savepint.
Código sql:
Mierda!!! no era bolígrafo sino pluma. Debemos deshacer todos los cambios!!!. Pero si ya tenia todo bueno hasta aca y no quiero volver a empezar. Ver original Utilizamos savepoint para deshacer los cambios hasta ese punto.
Código sql:
Mira que el cambio de hoja a papel se conserva y solo se recupera la palabra lapicero.Ver original Corregimos el error.
Código sql:
ahora todo está bien. Solo nos queda confirmar la terminación de la transacción y terminarla.Ver original
Código sql:
Ver original con respecto a tu pregunta: Cita: No es necesario. Cada sentencia se usa deacuerdo a las necesidades que tengas.hay una funcion que se llama SAVEPOINT me imagino que es "guardar punto", esto hay que colocarlo cada vez que se hace una consulta, actualizacion, o inserccion, por que aca solo lo muestra en un solo lado, ahh y tambien hay que colocar el rollback la cantidad de veces que ponemos los savepoint?? Si no tienes errores, solo es necesario el begin y el commit
__________________ Without data, You are another person with an opinion. W. Edwads Deming |
| |||
Respuesta: commit en postgres bien me haz aclarado un monton, mira yo te cuento lo que deseo hacer resulta que tengo que insertar en una tabla todo los detalles de ventas, en la otra tabla actualizar el stock y en otra insertar el total de la factura, entonces lo que yo quiero es que se complete todo o nada, por que sino me va a modificar por parte los registro y voy a estar hasta las manos o sea que con un begin y el commit suficiente, puede ser???? |
| |||
Respuesta: commit en postgres volvi huesos, mira me puede seguir ayudando, por que lo que consegui es create function pero no sale mas nada, vos me podes dar un ejemplo?? si no es molestia |
| ||||
Respuesta: commit en postgres En el foro de postgresql hay muchos ejemplos. http://www.forosdelweb.com/search.php?searchid=2810762 si quieres, puedes poner la estructura de las tablas y las acciones que quieres tomar. (de las que hablabas en un principio) y con esta información te ayudo a sacar la función para esto. saludops
__________________ Without data, You are another person with an opinion. W. Edwads Deming |
| |||
Respuesta: commit en postgres ESTA ES MI ESTRUCTURA DE LAS TRES TABLAS Y AL FINAL PONGO MI CODIGO EN PHP [/CODE] FACTURA CREATE TABLE factura ( idfactura int4 NOT NULL, fecha date, total varchar(10), pago varchar(10), deuda varchar(10), a_cuenta varchar(10), idclientes int4, CONSTRAINT pk_idfactura PRIMARY KEY (idfactura), CONSTRAINT fk_idclientes FOREIGN KEY (idclientes) REFERENCES clientes (idclientes) MATCH SIMPLE ON UPDATE NO ACTION ON DELETE NO ACTION STOCK CREATE TABLE stock ( idstock int4 NOT NULL, codigo varchar(15), detalle varchar(80), fecha_alta date, t32 varchar(3), t34 varchar(3), t35 varchar(3), t36 varchar(3), t37 varchar(3), t38 varchar(3), t39 varchar(3), t40 varchar(3), t42 varchar(3), t44 varchar(3), t46 varchar(3), t48 varchar(3), t50 varchar(3), t52 varchar(3), t54 varchar(3), t56 varchar(3), p_vta varchar(5), cant_pa varchar(3), vta_cur varchar(10), por_u varchar(3), por_cur varchar(3), cantidad varchar(10), idprenda int4, CONSTRAINT idstock PRIMARY KEY (idstock), CONSTRAINT fk_idprenda FOREIGN KEY (idprenda) REFERENCES prendas (idprenda) MATCH SIMPLE ON UPDATE NO ACTION ON DELETE NO ACTION VENTAS CREATE TABLE ventas ( idventas int4 NOT NULL, fecha date, codigo varchar(15), idusuario int4, precio_unit varchar(10), cantidad varchar(5), total varchar(10), "desc" varchar(3), CONSTRAINT pk_ventas PRIMARY KEY (idventas), CONSTRAINT fk_user FOREIGN KEY (idusuario) REFERENCES usuario (idusuario) MATCH SIMPLE ON UPDATE NO ACTION ON DELETE NO ACTION [CODE] Código PHP: |
| |||
Respuesta: commit en postgres ESTA ES MI ESTRUCTURA DE LAS TRES TABLAS Y AL FINAL PONGO MI CODIGO EN PHP [/CODE] FACTURA CREATE TABLE factura ( idfactura int4 NOT NULL, fecha date, total varchar(10), pago varchar(10), deuda varchar(10), a_cuenta varchar(10), idclientes int4, CONSTRAINT pk_idfactura PRIMARY KEY (idfactura), CONSTRAINT fk_idclientes FOREIGN KEY (idclientes) REFERENCES clientes (idclientes) MATCH SIMPLE ON UPDATE NO ACTION ON DELETE NO ACTION STOCK CREATE TABLE stock ( idstock int4 NOT NULL, codigo varchar(15), detalle varchar(80), fecha_alta date, t32 varchar(3), t34 varchar(3), t35 varchar(3), t36 varchar(3), t37 varchar(3), t38 varchar(3), t39 varchar(3), t40 varchar(3), t42 varchar(3), t44 varchar(3), t46 varchar(3), t48 varchar(3), t50 varchar(3), t52 varchar(3), t54 varchar(3), t56 varchar(3), p_vta varchar(5), cant_pa varchar(3), vta_cur varchar(10), por_u varchar(3), por_cur varchar(3), cantidad varchar(10), idprenda int4, CONSTRAINT idstock PRIMARY KEY (idstock), CONSTRAINT fk_idprenda FOREIGN KEY (idprenda) REFERENCES prendas (idprenda) MATCH SIMPLE ON UPDATE NO ACTION ON DELETE NO ACTION VENTAS CREATE TABLE ventas ( idventas int4 NOT NULL, fecha date, codigo varchar(15), idusuario int4, precio_unit varchar(10), cantidad varchar(5), total varchar(10), "desc" varchar(3), CONSTRAINT pk_ventas PRIMARY KEY (idventas), CONSTRAINT fk_user FOREIGN KEY (idusuario) REFERENCES usuario (idusuario) MATCH SIMPLE ON UPDATE NO ACTION ON DELETE NO ACTION [CODE] Código PHP: |
| ||||
Respuesta: commit en postgres Cita: No entiendo bien esto, pero plpgsql (Creación de funciones) soporta la clausula for y podrías simular esto en una función. for($i=0; $i < $total; $i++) { // $var = $_POST['fec'][$i]; $var = cambiaf_a_bd($_POST['fec'][$i]); $var1 = $_POST['cod'][$i]; $var2 = $_POST['use'][$i]; $var3 = $_POST['pre'][$i]; $var4 = $_POST['can'][$i]; $var5 = $_POST['pre_t'][$i]; $var6 = $_POST['des'][$i]; $var7 = $_POST['f_p'][$i]; $var8 = $_POST['tal'][$i]; $var9 = $_POST['sto'][$i];
__________________ Without data, You are another person with an opinion. W. Edwads Deming |
| |||
Respuesta: commit en postgres ahh eso es lo que hace es recorrer una matriz que envio de otro archivo, pero lo que mas me interesa es saber como utilizar la funcion, sobre lo que inserto y actualizo, muchas gracias |
| ||||
Respuesta: commit en postgres Un ejemplo de una función
Código sql:
Ver original si la ejecutas:
Código sql:
Ver original Un ejemplo de función con for.
Código sql:
Ver original Si lo corremos
Código sql:
Ver original le suma 5 días a una fecha. Espero esta sea una base para que logres tu objetivo
__________________ Without data, You are another person with an opinion. W. Edwads Deming |