我試圖在mySQL中插入日誌事件到表中(但我對數據庫工作比較陌生)。我有兩個表,一個是用戶名和用戶ID像這樣的表:SQL:在插入到另一個表時有條件地插入/選擇
CREATE TABLE IF NOT EXISTS `users` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(32) NOT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `name` (`name`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;
我有日誌消息的表看起來像這樣:
CREATE TABLE IF NOT EXISTS `messages` (
`messageid` int(11) NOT NULL AUTO_INCREMENT,
`userid` int(11) NOT NULL,
`timestamp` datetime NOT NULL,
`message` text NOT NULL,
PRIMARY KEY (`messageid`),
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;
我的問題是,當數據來源我需要登錄到「消息」我有三個信息:一個時間戳,一條消息和一個用戶名(不是用戶ID),並且該用戶名可能不在「用戶」表中(但我需要添加它)。爲了解決這個問題我一直在做:
- 選擇從用戶獲得與用戶名關聯的ID。
- 如果選擇返回0行,請將用戶名插入「users」表中。
- 現在將消息插入帶有ID,消息和時間戳的「消息」表中。
這需要每個消息2-3個SQL查詢(這可能是相當大量的數據)。
做1-3號最有效的方法是什麼?
我能夠發送多個查詢,讓你的SELECT LAST_INSERT_ID完美地工作,謝謝! – LCC