ciao!

ho creato una tabella apposita per i test:
  • id PK AI
  • nome UQ


INSERT IGNORE resitituisce 0 se non viene inserito nulla.
1 se viene effettivamente inserito un record.

però non posso fare la SELECT, perchè mi darebbe un risultato falsato.

allora ho pensato di fare così:
codice:
DELIMITER //
DROP PROCEDURE IF EXISTS import_test //
CREATE PROCEDURE import_test(
    IN valore VARCHAR(255)
)
    NO SQL
BEGIN
    INSERT IGNORE INTO a_test
    VALUES (NULL, valore);
    SELECT id AS last
    FROM a_test
    WHERE nome = valore
    UNION ALL
    SELECT LAST_INSERT_ID() AS last_id;
END
poi da PHP verificio che last e last_id siano uguali:
  • se lo sono vuole dire che è stato inserito un articolo nuovo
  • sennò no, perchè nel caso di IGNORE last_id è zero


sto facendo un pò di test, ma sembra funzionare!