2016-05-06 7 views
1

Ich habe zwei Tabellen in MySQL. Einer namens registros_temporal mit allen Spalten von Registern außer einer Spalte namens id.MySQL Einfügen von einer anderen Tabelle mit variabler Schrittweite

Ich muss alle Zeilen aus registros_temporal in Registros einfügen und die Spalten-ID mit einem Faktor erhöhen. Structures

:

registros: 
id, fecha, codigos... (50 columns) 

registros_temporal 
fecha, codigos... (49 columns) 

Meine Frage ist

SET @mes = 01; 
SET @anho = 2016; 

SET @id = (@anho-2000)*1000000000 + @mes*10000000; 
SELECT @id; 

INSERT INTO registros 
(
SELECT (@id := @id + 1) AS id, ll.* FROM registros_temporal ll 
ORDER BY fecha ASC 
) 
; 

SELECT (@id := @id + 1) AS id, ll.* FROM registros_temporal ll 
ORDER BY fecha ASC; 

Wenn die Datenlast i einen Fehler in der Spalte id haben. Alle 2147483647 sind, wenn i 16010000001 erwarten, 16010000002, 16010000003, 16010000004, ...

Id Spalte eine ganze Zahl Feld der größte int-Wert in MySQL für

+0

Ich brauche das Inkrement exponentiell. –

Antwort

4

2147483647 int Datentyp signiert ist. Anfangswert 16010000000 ist größer als 2147483647. Ändern Sie Ihren Spaltentyp zu bigint

+0

'BIGINT' ist korrekt. "UNSIGNED INT" macht hier keinen Sinn, warum schlägst du das überhaupt vor? – tadman

+0

@tadman danke für das Zeigen. Vorschlag entfernt – algor

+0

Danke. Das war der Fehler –