关于mysql存储过程创建动态表名及参数处理
转载请注明出处:帘卷西风的专栏(http://blog.csdn.net/ljxfblog) 最近游戏开始第二次内测,开始处理操作日志,最开始把日志放到同一个表里面,发现一天时间,平均100玩家在线,操作记录就超过13万条,决定拆表,按照日期来保存日志,每天的日志存到一个表里
转载请注明出处:帘卷西风的专栏(http://blog.csdn.net/ljxfblog)最近游戏开始第二次内测,开始处理操作日志,最开始把日志放到同一个表里面,发现一天时间,平均100玩家在线,操作记录就超过13万条,决定拆表,按照日期来保存日志,每天的日志存到一个表里面,然后定期把老的数据导出来备份后删掉。
具体思路是写日志的时候,根据当前的时间决定插入到当天的表里面,如表不存在则创建一个新的表,表名里面带上当天的日期。这就涉及到需要在存储过程里面动态创建一个跟日期相关的表。mysql不是很熟悉,只会基本的语法,这种高级功能都需要上网查询,呵呵。
最开始的想法,是想定义一个字符串变量,把表名拼好后来创建表,发现创建的表名是定义的变量名,只好重新想办法。
经过查资料,并试验了很多次,最后找到了实现的方法,需要先将sql语句拼出来,然后在使用PREPARE来处理就可以了。sql语句如下:
set @sql_create_table = concat( 'CREATE TABLE IF NOT EXISTS operrecord_', date_format(curdate(),'%y%m%d'), "( `oper_id` int(10) NOT NULL AUTO_INCREMENT, `oper_role` int(11) NOT NULL, `oper_type` varchar(30) NOT NULL DEFAULT '', `oper_content` varchar(1000) NOT NULL DEFAULT '', `oper_cls` int(10) NOT NULL DEFAULT '0', `oper_date` datetime NOT NULL, `oper_serverid` int(11) NOT NULL DEFAULT '1', PRIMARY KEY (`oper_id`) ) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8"); PREPARE sql_create_table FROM @sql_create_table; EXECUTE sql_create_table;
创建表之后,还需要插入数据,但是insert语句里面也要使用动态表名,没办法还是需要和上面一样的方法来处理,先拼sql语句,示例如下:(注:rId等是存储过程传入的参数)
set @sql_oper_revcord = concat( "INSERT INTO operrecord_", date_format(curdate(),'%y%m%d'), " (`oper_role`, `oper_type`, `oper_content`, `oper_cls`, `oper_serverid`, `oper_date`) values (rId, type, content, cls, serverid, NOW())"); PREPARE sql_oper_revcord FROM @sql_oper_revcord; EXECUTE sql_oper_revcord;
执行的时候发现会报错,找不到rId这个字段,网上说应该给rId加上引号如('rId')也不行,继续报错数据类型不匹配。
想了想,应该把rId这些传人的参数声明为局部参数,再次测试果然成功了,另外需要注意的是表字段在字符串里面需要加上(`xxx`)才行。正确的sql语句如下:
set @rId = rId, @type = type, @content = content, @cls = cls, @serverid = serverid; set @sql_oper_revcord = concat( "INSERT INTO operrecord_", date_format(curdate(),'%y%m%d'), " (`oper_role`, `oper_type`, `oper_content`, `oper_cls`, `oper_serverid`, `oper_date`) values (@rId, @type, @content, @cls, @serverid, NOW())"); PREPARE sql_oper_revcord FROM @sql_oper_revcord; EXECUTE sql_oper_revcord;
记下这编文章,以作备忘。也希望能帮到其它遇到此问题的同学。

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

AI Hentai Generator
Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen



MySQL ist für Anfänger geeignet, da es einfach zu installieren, leistungsfähig und einfach zu verwalten ist. 1. Einfache Installation und Konfiguration, geeignet für eine Vielzahl von Betriebssystemen. 2. Unterstützung grundlegender Vorgänge wie Erstellen von Datenbanken und Tabellen, Einfügen, Abfragen, Aktualisieren und Löschen von Daten. 3. Bereitstellung fortgeschrittener Funktionen wie Join Operations und Unterabfragen. 4. Die Leistung kann durch Indexierung, Abfrageoptimierung und Tabellenpartitionierung verbessert werden. 5. Backup-, Wiederherstellungs- und Sicherheitsmaßnahmen unterstützen, um die Datensicherheit und -konsistenz zu gewährleisten.

Navicat selbst speichert das Datenbankkennwort nicht und kann das verschlüsselte Passwort nur abrufen. Lösung: 1. Überprüfen Sie den Passwort -Manager. 2. Überprüfen Sie Navicats "Messnot Password" -Funktion; 3.. Setzen Sie das Datenbankkennwort zurück; 4. Kontaktieren Sie den Datenbankadministrator.

Erstellen Sie eine Datenbank mit Navicat Premium: Stellen Sie eine Verbindung zum Datenbankserver her und geben Sie die Verbindungsparameter ein. Klicken Sie mit der rechten Maustaste auf den Server und wählen Sie Datenbank erstellen. Geben Sie den Namen der neuen Datenbank und den angegebenen Zeichensatz und die angegebene Kollektion ein. Stellen Sie eine Verbindung zur neuen Datenbank her und erstellen Sie die Tabelle im Objektbrowser. Klicken Sie mit der rechten Maustaste auf die Tabelle und wählen Sie Daten einfügen, um die Daten einzufügen.

Durch das Kopieren einer Tabelle in MySQL müssen neue Tabellen erstellt, Daten eingefügt, Fremdschlüssel festgelegt, Indizes, Auslöser, gespeicherte Verfahren und Funktionen kopiert werden. Zu den spezifischen Schritten gehören: Erstellen einer neuen Tabelle mit derselben Struktur. Fügen Sie Daten aus der ursprünglichen Tabelle in eine neue Tabelle ein. Legen Sie die gleiche fremde Schlüsselbeschränkung fest (wenn die Originaltabelle eine hat). Erstellen Sie den gleichen Index. Erstellen Sie denselben Auslöser (wenn die ursprüngliche Tabelle eine hat). Erstellen Sie dieselbe gespeicherte Prozedur oder Funktion (wenn die ursprüngliche Tabelle verwendet wird).

Navicat für MariADB kann das Datenbankkennwort nicht direkt anzeigen, da das Passwort in verschlüsselter Form gespeichert ist. Um die Datenbanksicherheit zu gewährleisten, gibt es drei Möglichkeiten, Ihr Passwort zurückzusetzen: Setzen Sie Ihr Passwort über Navicat zurück und legen Sie ein komplexes Kennwort fest. Zeigen Sie die Konfigurationsdatei an (nicht empfohlen, ein hohes Risiko). Verwenden Sie Systembefehlsleitungs -Tools (nicht empfohlen, Sie müssen die Befehlszeilen -Tools beherrschen).

Zeigen Sie die MySQL -Datenbank mit dem folgenden Befehl an: Verbindung zum Server: MySQL -U -Benutzername -P -Kennwort ausführen STEILE -Datenbanken; Befehl zum Abrufen aller vorhandenen Datenbanken auswählen Datenbank: Verwenden Sie den Datenbanknamen. Tabelle Ansicht: Tabellen anzeigen; Tabellenstruktur anzeigen: Beschreiben Sie den Tabellennamen; Daten anzeigen: Wählen Sie * aus Tabellenname;

Kopieren und einfügen in MySQL die folgenden Schritte: Wählen Sie die Daten aus, kopieren Sie mit Strg C (Windows) oder CMD C (MAC). Klicken Sie mit der rechten Maustaste auf den Zielort, wählen Sie ein Einfügen oder verwenden Sie Strg V (Windows) oder CMD V (MAC). Die kopierten Daten werden in den Zielort eingefügt oder ersetzen vorhandene Daten (je nachdem, ob die Daten bereits am Zielort vorhanden sind).

Sie können eine neue MySQL -Verbindung in Navicat erstellen, indem Sie den Schritten folgen: Öffnen Sie die Anwendung und wählen Sie eine neue Verbindung (Strg N). Wählen Sie "MySQL" als Verbindungstyp. Geben Sie die Hostname/IP -Adresse, den Port, den Benutzernamen und das Passwort ein. (Optional) Konfigurieren Sie erweiterte Optionen. Speichern Sie die Verbindung und geben Sie den Verbindungsnamen ein.
