Leser: 1
![]() |
![]() |
9 Einträge, 1 Seite |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
my $tabelle = shift; # Neue Spalten hinzufügen $sql = "ALTER TABLE $tabelle ADD _email_first_part VARCHAR( 255 ) NOT NULL AFTER email, ADD _email_last_part VARCHAR( 255 ) NOT NULL AFTER _email_first_part"; $dbh->do($sql); if($DBI::err) { dbError("3084 dbUpdateEmailPartRows (SQL: $sql) (do): $DBI::errstr"); return 0; } # Index über diese Spalten legen $sql = "ALTER TABLE $tabelle ADD INDEX ( _email_first_part , _email_last_part )"; $dbh->do($sql); if($DBI::err) { dbError("3089 dbUpdateEmailPartRows (SQL: $sql) (do): $DBI::errstr"); return 0; } # Daten aus der Spalte 'email' erzeugen und in die neuen Spalten einfügen. $sql = "UPDATE $tabelle SET _email_first_part = SUBSTR( email, 1, POSITION( '\@' IN email) ), _email_last_part = SUBSTRING( email, POSITION( '\@' IN email) , LENGTH( email ) - POSITION( '\@' IN email ) +1 )"; $dbh->do($sql); if($DBI::err) { dbError("3094 dbUpdateEmailPartRows (SQL: $sql) (do): $DBI::errstr"); return 0; }
plautzenpa+2008-01-08 16:45:33--Führe ich den letzten alleine aus, wenn die ersten schon fertig sind, funktioniert es.
$res = $dbh->trace(2);
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
my $tabelle = shift; # Neue Spalten hinzufügen $sql = "ALTER TABLE $tabelle ADD _email_first_part VARCHAR( 255 ) NOT NULL AFTER email, ADD _email_last_part VARCHAR( 255 ) NOT NULL AFTER _email_first_part"; $dbh->do($sql); if($DBI::err) { dbError("3084 dbUpdateEmailPartRows (SQL: $sql) (do): $DBI::errstr"); return 0; } # Index über diese Spalten legen $sql = "ALTER TABLE $tabelle ADD INDEX ( _email_first_part , _email_last_part )"; $dbh->do($sql); if($DBI::err) { dbError("3089 dbUpdateEmailPartRows (SQL: $sql) (do): $DBI::errstr"); return 0; } # Da hier der Fehler ist, trace einschalten $dbh->trace(2); # Daten aus der Spalte 'email' erzeugen und in die neuen Spalten einfügen. $sql = "UPDATE $tabelle SET _email_first_part = SUBSTR( email, 1, POSITION( '\@' IN email) ), _email_last_part = SUBSTRING( email, POSITION( '\@' IN email) , LENGTH( email ) - POSITION( '\@' IN email ) +1 )"; $dbh->do($sql); if($DBI::err) { dbError("3094 dbUpdateEmailPartRows (SQL: $sql) (do): $DBI::errstr"); return 0; } # Und Trace wieder abschalten $dbh->trace(0);
$dbh->trace(2,'/tmp/dbi_trace.log');
![]() |
![]() |
9 Einträge, 1 Seite |