372 Stimmen

Holen Sie sich den aktuellen AUTO_INCREMENT-Wert für eine beliebige Tabelle

Wie erhalte ich den aktuellen AUTO_INCREMENT-Wert für eine Tabelle in MySQL?

4voto

Jiří Chmiel Punkte 834

Anfrage zur Überprüfung des Prozentsatzes "Verwendung" von AUTO_INCREMENT für alle Tabellen eines bestimmten Schemas (außer Spalten mit dem Typ bigint unsigned):

SELECT 
  c.TABLE_NAME,
  c.COLUMN_TYPE,
  c.MAX_VALUE,
  t.AUTO_INCREMENT,
  IF (c.MAX_VALUE > 0, ROUND(100 * t.AUTO_INCREMENT / c.MAX_VALUE, 2), -1) AS "Verwendung (%)"
FROM 
  (SELECT 
     TABLE_SCHEMA,
     TABLE_NAME,
     COLUMN_TYPE,
     CASE 
        WHEN COLUMN_TYPE LIKE 'tinyint(1)' THEN 127
        WHEN COLUMN_TYPE LIKE 'tinyint(1) unsigned' THEN 255
        WHEN COLUMN_TYPE LIKE 'smallint(%)' THEN 32767
        WHEN COLUMN_TYPE LIKE 'smallint(%) unsigned' THEN 65535
        WHEN COLUMN_TYPE LIKE 'mediumint(%)' THEN 8388607
        WHEN COLUMN_TYPE LIKE 'mediumint(%) unsigned' THEN 16777215
        WHEN COLUMN_TYPE LIKE 'int(%)' THEN 2147483647
        WHEN COLUMN_TYPE LIKE 'int(%) unsigned' THEN 4294967295
        WHEN COLUMN_TYPE LIKE 'bigint(%)' THEN 9223372036854775807
        WHEN COLUMN_TYPE LIKE 'bigint(%) unsigned' THEN 0
        ELSE 0
     END AS "MAX_VALUE" 
   FROM 
     INFORMATION_SCHEMA.COLUMNS
     WHERE EXTRA LIKE '%auto_increment%'
   ) c

   JOIN INFORMATION_SCHEMA.TABLES t ON (t.TABLE_SCHEMA = c.TABLE_SCHEMA AND t.TABLE_NAME = c.TABLE_NAME)

WHERE
 c.TABLE_SCHEMA = 'DEIN_SCHEMA' 
ORDER BY
 `Verwendung (%)` DESC;

2voto

McRui Punkte 1806

Ich habe dasselbe gesucht und am Ende eine statische Methode in einer Hilfsklasse erstellt (in meinem Fall habe ich sie App\Helpers\Database genannt).

Die Methode

/**
 * Methode zum Abrufen des Autoinkrementwerts aus einer Datenbanktabelle
 *
 * @access public
 *
 * @param string $database Der Datenbankname oder die Konfiguration in der .env-Datei
 * @param string $table    Der Tabellenname
 *
 * @return mixed
 */
public static function getAutoIncrementValue($database, $table)
{
    $database ?? env('DB_DATABASE');

    return \DB::select("
        SELECT AUTO_INCREMENT 
        FROM information_schema.TABLES 
        WHERE TABLE_SCHEMA = '" . env('DB_DATABASE') . "' 
        AND TABLE_NAME = '" . $table . "'"
    )[0]->AUTO_INCREMENT;
}

Um die Methode aufzurufen und das MySql AUTO_INCREMENT zu erhalten, verwenden Sie einfach folgendes:

$auto_increment = \App\Helpers\Database::getAutoIncrementValue(env('DB_DATABASE'), 'dein_tabellenname');

Ich hoffe, das hilft.

2voto

seqwait Punkte 97

Liste dbname alle Tabennamen und AUTO_INCREMENT

SELECT `AUTO_INCREMENT`,`TABLE_NAME`
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_SCHEMA = 'dbname' ORDER BY AUTO_INCREMENT desc

1voto

Mukul Punkte 37

Wenn die Spalte in SQL Server automatisch inkrementiert wird, um den aktuellen automatisch inkrementierten Wert zu sehen, und wenn Sie diesen Wert für diese Spalte bearbeiten möchten, verwenden Sie die folgende Abfrage.

-- um aktuellen Wert zu erhalten
select ident_current('Table_Name')

-- um aktuellen Wert zu aktualisieren
dbcc checkident ('[Table_Name]', reseed, "Ihr Wert")

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X