Wie erhalte ich den aktuellen AUTO_INCREMENT-Wert für eine Tabelle in MySQL?
Antworten
Zu viele Anzeigen?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;
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.
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")
- See previous answers
- Weitere Antworten anzeigen