Similar a la última identificación insertada, ¿hay un buen mecanismo en mysql para obtener la última identificación eliminada después de que se haya eliminado una fila?Obtener la última identificación eliminada en mysql
Respuesta
¿Por "ID", supongo que quiere decir "autoincremento"?
Dado que puede eliminar cualquier fila arbitraria (o conjunto de filas) en cualquier momento: no, no hay forma de saber QUÉ fila (o filas) borró recientemente.
Usted puede, sin embargo, crear un "disparador" para guardar esta información para usted:
En lugar de crear un disparador, es necesario utilizar esta cada vez cuando se elimina
declare @table1 table(id int identity,name varchar(50))
insert into @table1 (name) values('abc')
insert into @table1 (name) values('xyz')
insert into @table1 (name) values('pqr')
insert into @table1 (name) values('wqe')
delete from @table1 output deleted.name,deleted.id where id=3
Depende de cómo se realizan las eliminaciones. Pero si usted tiene una columna entera ID, puede utilizar este truco:
DELETE FROM users
WHERE login = 'newtover' AND user_id = LAST_INSERT_ID(user_id);
SELECT LAST_INSERT_ID();
embargo, usted debe asegurarse de que MySQL cortocircuita la condición anterior y no optimiza para funcionar user_id = LAST_INSERT_ID(user_id)
primero. Es decir, puede ajustar la consulta a algo como:
DELETE FROM users
WHERE login = 'newtover' AND IFNULL(user_id, 0) = LAST_INSERT_ID(user_id);
P.S. No pregunto por qué podría necesitar esto. Lo más probable es que no debes quererlo =)
Si le sucede a estar llamando a su base de datos MySQL desde JDBC, a continuación, puede ejecutar un SELECT
y llame ResultSet.deleteRow()
a medida que lea los resultados y agarrar los identificadores.
import java.sql.*;
public class Delete {
public static void main(String... args) throws SQLException {
try(Connection conn = DriverManager.getConnection("jdbc:mysql://localhost/test?user=john&password=denver");
PreparedStatement statement = conn.prepareStatement("select id from some_table where event=?")
) {
statement.setString(1, "test");
try(ResultSet result = statement.executeQuery()) {
System.out.println("deleting id " + result.getLong("id"));
result.deleteRow();
}
conn.commit();
}
}
}
tabla Ejemplo
create table some_table(
id bigint(12),
event varchar(100)
);
insert into some_table values(1, 'test');
insert into some_table values(2, 'test');
insert into some_table values(3, 'test');
insert into some_table values(4, 'other');
El truco con LAST_INSERT_ID ya se mencionó, pero esa respuesta no ve hecho de que podría agregar!
última identificación de inserción tiene un tamaño fijo, pero para las teclas pequeñas podría ser utilizado.
mysql> insert into t1() values(),(),(),(),(),(),();
Query OK, 7 row affected (0.00 sec)
mysql> select * from t1;
+---+
| n |
+---+
| 1 |
| 2 |
| 3 |
| 4 |
| 5 |
| 6 |
| 7 |
+---+
7 rows in set (0.00 sec)
select last_insert_id(0); -- clear accumulator
+-------------------+
| last_insert_id(0) |
+-------------------+
| 0 |
+-------------------+
1 row in set (0.00 sec)
-- keys will be separated by zeroes
mysql> delete from t1
where last_insert_id(last_insert_id()
* pow(10, 2 + floor(log(n)/log(10))) + n)
limit 6;
Query OK, 6 rows affected (0.00 sec)
mysql> select last_insert_id();
+------------------+
| last_insert_id() |
+------------------+
| 10203040506 |
+------------------+
1 row in set (0.00 sec)
-- rows deleted
mysql> select * from t1 limit 1;
+---+
| n |
+---+
| 7 |
+---+
1 row in set (0.00 sec)
- 1. Node + Mongoose: ¿Obtener la última identificación insertada?
- 2. PDO obtener la última identificación insertada
- 3. ¿Cómo sabe PDO la última identificación insertada en MySQL?
- 4. MySQL ON DUPLICATE KEY - ¿la última identificación de inserción?
- 5. cómo obtener la última identificación insertada en linq EF
- 6. Obtener la última inserción de identificación con SQLite.NET en C#
- 7. ¿Hay alguna forma de obtener la última identificación insertada de una columna INCREMENTADA automáticamente en MySQL?
- 8. Obtener la última identificación de inserción con la doctrina 2?
- 9. Obtener la última entrada en una tabla de MySQL
- 10. PLSQL JDBC: ¿Cómo obtener la última fila de identificación?
- 11. SQL Server y C#: obtener la última identificación insertada
- 12. Obtener la última consulta ejecutada en MySQL con PHP/CodeIgniter
- 13. SELECCIONE la última identificación, sin INSERTAR
- 14. Vistas materializadas - Identificación de la última actualización
- 15. MySQL: Obtener total última fila de resultado MySql
- 16. MySQL select * con identificación distinta
- 17. conseguir la última versión de una carpeta eliminada en la subversión
- 18. obtener los registros de la última marca de tiempo mysql
- 19. cómo puedo conseguir la última Identificación insertada en formview
- 20. ¿Obtienes la última identificación insertada en un desencadenante?
- 21. Cómo obtener Id de la última entidad persistente usando JPA
- 22. ¿Cómo obtener la última identificación insertada usando la api de JS?
- 23. ¿Cuál es la mejor forma de obtener la última identificación insertada usando sqlite de Java?
- 24. PDO ¿La última identificación insertada siempre es la correcta?
- 25. última Identificación del inserto con SQLAlchemy
- 26. Obtener la última página visitada
- 27. obtener la última iteración en jquery cada
- 28. MySQL: obtención de filas agregadas la última hora
- 29. cómo obtener el valor de la última fila en la base de datos mysql
- 30. MySQL - consulta de la última tabla creada
¿Por qué necesita valores que ya no están en la base de datos? Para una respuesta más precisa, este es un problema esencial. – danihp