Visualizzazione dei risultati da 1 a 3 su 3
  1. #1

    Inserire un record con progressivo

    Io ho un sito che vorrei assegnasse un nome temporaneo agli utenti
    esempio: Senzanome_213 (Unnamed_213 in inglese)
    seguendo un ordine progressivo.
    Per farlo pensavo di contare quanti record avessero la stringa che conteneva Unnamed_
    incrementare+1 e poi inserire il record.
    ma la cosa si sta rilevando piu complessa.

    codice:
    UPDATE users
    SET name=concat('Unnamed_',(SELECT count(name)+1 FROM users WHERE name LIKE 'Unnamed_%'))
    WHERE id=1
    LIMIT 1
    Errore: Error Code: 1093. You can't specify target table 'users' for update in FROM clause
    Spiegazione: In MySQL, you can't modify the same table which you use in the SELECT part.
    Il Cavaliere dei Sogni

  2. #2
    Tutte le tabelle InnoDB dovrebbero avere una chiave primaria, in genere AUTO_INCREMENT, quindi basta appendere quel valore alla parola 'user'...
    STK/Unit: Unit Test framework per MariaDB
    http://stk.wikidot.com/stk-unit

  3. #3
    Puoi anche usare un trigger:

    DELIMITER ||
    CREATE TRIGGER auto_name
    BEFORE INSERT
    ON users
    FOR EACH ROW
    BEGIN
    SET NEW.name = CONCAT('Unnamed_', NEW.id);
    END;
    ||
    DELIMITER ;
    STK/Unit: Unit Test framework per MariaDB
    http://stk.wikidot.com/stk-unit

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.