Node.js Mysql Insert, ha nem létezik az email

Node.js Mysql Insert, ha nem létezik az email
2021-04-28T09:05:22+02:00
2021-04-29T01:10:43+02:00
2022-10-15T21:16:22+02:00
*deleted_99318010
Sziasztok,

Ezzel sikerül az insert.

var sql = "INSERT INTO emailtest (email, sent, unsubscribe) VALUES ?"; var values = [ ['test@test.com', time, 0] ]; connection.query(sql, [values], function (err, result) { if (err) throw err; console.log("Number of records inserted: " + result.affectedRows); }); });
Viszont azt szeretném, ha a VALUES(email) létezik a MySQL-ben, akkor ne legyen Insert.

Köszönöm a választ.
Mutasd a teljes hozzászólást!
Hali!

Ha jól értem, arról van szó, hogy az adatbázis email oszlopa uniq lenne…

Így van, a tábla (!) `email` oszlopa egyedi legyen (vagy akár az `email` oszlop egy/több másik – NULL értéket nem tartalmazható – oszloppal együtt, ha pl. nem fizikai törlés történik a táblában, hanem valamilyen mező tartalmazza a törlés állapotát). Az amúgy is alapvető, hogy már adatbázis-szinten a lehetőségekhez képest minden „korlátozást” meghatározunk. Természetesen, a feladat függvényében – de ahogy' látom, a kérdező itt pontosan azt szeretné, hogy ugyanolyan e-mail címmel ne lehessen több sor a táblában.

… és egy try catch-csel insertelnél?

Akár úgy is, de akár szimplán megoldható (mégpedig pontosan azzal a lehetőséggel – result objektum – amit a kérdező is használ a példájában), valahogy' így:
var sql = "INSERT INTO emailtest (email, sent, unsubscribe) VALUES (?, ?, ?)"; var values = ['test@test.com', time, 0]; connection.query(sql, values, (err, result, fields) => { if (err) { throw err; } if (result.affectedRows) { console.log(`Success! Last inserted ID: ${result.insertId}`); } else { console.log('Error! Email already exists.'); } });,
Mutasd a teljes hozzászólást!

Tetszett amit olvastál? Szeretnél a jövőben is értesülni a hasonló érdekességekről?
abcd