Lassen Sie uns, ohne ins Detail zu gehen, direkt zum Code gehen. Willkommen, um gemeinsam zu kommunizieren und zu lernen. Erstellen Sie eine gespeicherte Prozedur, um eine Tabelle nach Monaten zu erstellen. Die SQL-Anweisung lautet wie folgt: TRENNUNGSZEICHEN // DROP-VERFAHREN, WENN EXISTIERT create_table_by_month // VERFAHREN ZUM ERSTELLEN `create_table_by_month`() BEGINNEN #--Deklarieren Sie vorab die Variable, die später verwendet wird. DECLARE nextMonth varchar(20); DECLARE nextTABLE varchar(20); DECLARE csql varchar(5210); DECLARE AusgabeParam int; DECLARE Tabellenname_1 varchar (20); DECLARE Tabellenname_2 varchar (20); DECLARE table_prefix varchar(20); #--Nächsten Monat abrufen SELECT SUBSTR(replace(DATE_ADD(CURDATE(), INTERVAL 1 MONTH), '-', ''), 1, 6) INTO @nextMonth; #--Teilen und analysieren Sie die obigen SQL-Anweisungen: #MySQL-Zeitfunktion date_add() fügt dem Datum ein Zeitintervall hinzu. Dieses SQL steht für das Datum einen Monat nach dem aktuellen Datum #select DATE_ADD(CURDATE(), INTERVAL 1 MONTH); ##Rückkehr 20201006 #Auswählen ersetzen('2020-10-06', '-', ''); ##Rückkehr 20201006 #Auswählen ersetzen(DATE_ADD(CURDATE(), INTERVALL 1 MONAT), '-', ''); ## Zurück zu 202010 #SUBSTR AUSWÄHLEN(20201006,1,6); ##Weisen Sie der Variablen @nextMonth einen Wert zu. #SELECT SUBSTR(20201006,1,6) INTO @nextMonth; # Tabelle 1 #Setzen Sie den Wert der Tabellenpräfixvariablen auf td_user_banks_log_ Setzen Sie @table_prefix = "td_user_banks_log_". #Definieren Sie den Namen der Tabelle 1 SET @tableName_1 = CONCAT(@table_prefix, @nextMonth); ##Definieren Sie die SQL-Anweisung zum Erstellen eines Tabellensatzes @csql=concat("create table if not exists ",@tableName_1,"( `id` int(11) NICHT NULL AUTO_INCREMENT, `app_id` varchar(100) NICHT NULL, `user_id` int(11) NOT NULL DEFAULT '0' COMMENT 'Benutzer-ID', `Typ` tinyint(2) NICHT NULL STANDARD '1' KOMMENTAR '1 Anmeldebelohnung 2 Aktivitätsbelohnung 3 Einlösung', `gold_coin` int(11) NICHT NULL, `Bemerkungen` varchar(200) NOT NULL DEFAULT '' COMMENT 'Bemerkungen', `create_at` Zeitstempel NICHT NULL STANDARD CURRENT_TIMESTAMP, Primärschlüssel (`id`), SCHLÜSSEL `app_id` (`app_id`), SCHLÜSSEL `user_id` (`user_id`), SCHLÜSSEL `Typ` (`Typ`), SCHLÜSSEL `create_at` (`create_at`) )ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;"); #PREPARE Einführung: ##Die Anweisung wird verwendet, um eine Anweisung vorzubereiten und den Namen Anweisungsname zur späteren Bezugnahme anzugeben. Bei Anweisungsnamen wird die Groß-/Kleinschreibung nicht beachtet. ##preparable_stmt kann eine Zeichenfolge oder eine Benutzervariable sein, die den Anweisungstext enthält. Der Text muss eine einzelne SQL-Anweisung darstellen, nicht mehrere Anweisungen. VORBEREITEN von create_stmt von @csql; AUSFÜHREN create_stmt; DEALLOCATE PREPARE create_stmt; # Tabelle 2 und Tabelle 1 haben dasselbe SQL, daher werden wir sie hier nicht vorstellen: setze @table_prefix = 'td_sign_log_'; SET @tableName_2 = CONCAT(@table_prefix, @nextMonth); setze @csql=concat("Tabelle erstellen, falls nicht vorhanden ",@tableName_2,"( `id` int(11) NICHT NULL AUTO_INCREMENT, `app_id` varchar(100) NICHT NULL, `user_id` int(11) NICHT NULL, `Tag` int(11) NICHT NULL STANDARD '0' KOMMENTAR 'Tag', `sign_type` tinyint(2) NOT NULL DEFAULT '1' COMMENT '1 Anmeldung 2 Make-up-Anmeldung 3 Angesammelte Belohnung', `Typ` tinyint(2) NICHT NULL STANDARD '1' KOMMENTAR '1 Goldmünze', `num` int(11) NICHT NULL STANDARD '0', `data_id` int(11) NICHT NULL STANDARD '0', `create_at` Zeitstempel NICHT NULL STANDARD CURRENT_TIMESTAMP, Primärschlüssel (`id`), SCHLÜSSEL `app_id` (`app_id`), SCHLÜSSEL `user_id` (`user_id`), SCHLÜSSEL `Typ` (`Typ`), SCHLÜSSEL `data_id` (`data_id`), SCHLÜSSEL `create_at` (`create_at`), SCHLÜSSEL `sign_type` (`sign_type`), SCHLÜSSEL `Tag` (`Tag`) )ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;"); VORBEREITEN von create_stmt von @csql; AUSFÜHREN create_stmt; DEALLOCATE PREPARE create_stmt; Wählen Sie COUNT(1) INTO @outputParam FROM information_schema.`TABLES` WHERE TABLE_NAME in (@tableName_1, @tableName_2); WÄHLEN Sie @outputParam; ENDE // Trennzeichen ; #--Erstellen Sie jeden Monat eine geplante Aufgabe für die Tabelle des aktuellen Monats: Erstellen Sie ein EREIGNIS „create_table_by_month“ nach Plan, das jeden Monat um „2020-09-06 12:40:00“ beginnt. Nach Abschluss nicht beibehalten. Aktivieren. Rufen Sie „create_table_by_month(“) auf. Tipp: Rufen Sie in der geplanten Aufgabe die gespeicherte Prozedur SQL1-Anweisung auf, um sie zu einem bestimmten Zeitpunkt auszuführen. Der angegebene Zeitpunkt muss in der Zukunft liegen. #Sehen Sie sich die SQL-Anweisung zum Erstellen einer gespeicherten Prozedur an: anzeigen erstellen VERFAHREN create_table_by_month_G #Löschen Sie die gespeicherte Prozedur: DROP-VERFAHREN, WENN EXISTIERT: create_table_by_month; #Löschen Sie das geplante Task-Drop-Ereignis create_table_by_month1; Die oben gespeicherten Prozedur-SQL-Anweisungen und Timer-SQL-Anweisungen werden in der Produktionsumgebung verwendet #Fehlerbehebung: Ich habe festgestellt, dass das MySQL-Protokoll einen Fehler gemeldet hat. Das in der SQL-Anweisung der ursprünglichen gespeicherten Prozedur hinzugefügte Indexschlüsselfeld war zufällig ein Feld, das in der Tabelle nicht vorhanden war, daher wurde der folgende Fehler gemeldet. Entfernen Sie also das Indexschlüsselfeld in der gespeicherten Prozedur und das SQL ist in Ordnung.
Die oben gespeicherte Prozedur ist nur das SQL der Online-Geschäftsumgebung dieses Bloggers. Bitte wenden Sie es nicht direkt an. Der entstandene Verlust hat nichts mit diesem Blogbeitrag zu tun. Dieser Artikel wird hier mit der ursprünglichen Absicht des Lernens und der Kommunikation veröffentlicht und dient nur als Referenz für das Lernen und die Kommunikation aller. Damit ist dieser Artikel über die Schritte zum Erstellen einer Monatstabelle mithilfe einer gespeicherten Prozedur in MySQL abgeschlossen. Weitere Informationen zum Erstellen einer Monatstabelle in MySQL finden Sie in früheren Artikeln auf 123WORDPRESS.COM oder in den folgenden verwandten Artikeln. Ich hoffe, Sie werden 123WORDPRESS.COM auch in Zukunft unterstützen! Das könnte Sie auch interessieren:
|
<<: Verwendung des Linux-Stat-Befehls
>>: Implementierung des Durchklickens des transparenten Bereichs unregelmäßiger Formen in Electron
<br />Verwendung des Zeilenumbruch-Tags<b...
Die Geschichte wiederholt sich immer überraschend...
Vorwort Vor kurzem war ich damit beschäftigt, ein...
Fallbeschreibung: - Verwenden Sie Tabellen, um Se...
Vorwort In der Vergangenheit verwendete das Unter...
1. Einführung in DockerUI DockerUI basiert auf de...
Manchmal kann das Thema eines Projekts nicht jede...
In diesem Artikelbeispiel wird der spezifische Co...
herunterladen Offizieller MySQL-Download, wählen ...
Systemumgebung: Windows 7 1. Docker installieren ...
Inhaltsverzeichnis Was ist ein Skelettbildschirm?...
Inhaltsverzeichnis 1. Was ist eine Datenbank? 2. ...
Inhaltsverzeichnis Vorwort Erstellen Sie ein Vite...
Tabellenstruktur einer MySQL-Tabelle schnell ände...
Ich möchte eine Seite mit CSS3-abgerundeten Ecken...