php - validar - Insertar comprobación de consulta si el registro existe. Si no, insértelo
validar si un registro existe en la base de datos (5)
Debería agregar una clave ÚNICA en ip_addr
y luego usar INSERT IGNORE
.
Tal vez esto ayude si aún no has oído hablar de UNIQUE
: http://www.tutorialspoint.com/sql/sql-unique.htm
Esta pregunta ya tiene una respuesta aquí:
- ¿Cómo ''insertar si no existe'' en MySQL? 9 respuestas
Tengo una tabla mysql ip_list
...
+----+---------------+
| id | ip_addr |
+----+---------------+
| 1 | 192.168.100.1 |
| 2 | 192.168.100.2 |
| 3 | 192.168.100.3 |
| 4 | 192.168.100.4 |
| 5 | 192.168.100.5 |
+----+---------------+
Quiero agregar solo los registros que no están en la columna ip_addr
. Por ej.
Tengo los siguientes registros para agregar en la tabla ip_addr
192.168.100.6
192.168.100.10
192.168.100.11
192.168.100.1 //already in column
192.168.100.12
No quiero agregar 192.168.100.1
, porque ya está en la columna.
Entonces, ¿es posible que la consulta INSERT
primero verifique los registros y luego lo inserte?
Actualmente, estoy haciendo esto con ... primero SELECT
los registros, luego los coincido y luego lo INSERT
.
pero, quiero hacer con una sola consulta.
Prueba la sentencia MySQL INSERT IGNORE .
Puede utilizar la siguiente consulta. Aquí insertará la dirección_ip cuando no esté presente en su tabla.
INSERT INTO ip_list (ip_addr)
SELECT * FROM (SELECT ''192.168.100.1'') AS tmp
WHERE NOT EXISTS (
SELECT ip_addr FROM ip_list WHERE ip_addr=''192.168.100.1''
);
puede hacerlo con Insertar ... en la actualización de la clave duplicada
O
Alternativamente también puedes usar Replace
si fuera usted, impongo una restricción UNIQUE
en la columna,
ALTER TABLE ip_list ADD CONSTRAINT IP_Unique UNIQUE(ip_addr)