La maggior parte dei tavoli di lavoro con incrementi di incrementare dal prossimo grande numero intero.
Si può sempre inserire un numero intero, che è superiore all'indice di autoincrementazione corrente. L'indice autoincrementante seguirà automaticamente da quel nuovo valore +1 in su.
Quindi, se si dispone di una tabella di fresco conio l'indice corrente è 0, il tasto successivo sarà 0 + 1 = 1.
Quello che vogliamo è una chiave primaria che inizia a 1000, quindi quello che facciamo è inserire un record con un valore id di 999, in modo che il prossimo inserto diventerà 1000.
in codice:
$startId = 1000;
DB::table('users')->insert(['id'=> $startId - 1]);
DB::table('users')->where('id',$startId - 1)->delete();
e ora si dispone di un tavolo vuoto dove il prossimo inserto id dovrebbe essere 1000.
Si noti che se si dispone di valori per l'inizializzazione nella tabella con i valori id < startId
è necessario eseguire tale prima di si eseguono queste istruzioni. Altrimenti il database genererà un errore di violazione del vincolo.
Questo dovrebbe funzionare agnostico del database, ma se c'è un database che non segue questa regola di autoincremento mi piacerebbe sentirne parlare.
Ho incollato quella riga sotto la mia migrazione, ha generato un errore: 'L'istruzione use con nome non composto 'DB' non ha effetto' –
Penso che stai usando DB in alto (usa DB;) che è perché stai ricevendo questo errore, basta rimuovere questo, e ho aggiornato la mia risposta dare un'occhiata. –
Questo non funziona per tutti i database. Esempio, non funziona per sqlite. – abkrim