2014-03-07 114 views
1
CREATE TABLE item(
code TINYINT UNSIGNED NOT NULL, 
name CHAR(20) NOT NULL, 
UNIQUE KEY(name, code)) ENGINE = INNODB 

CREATE TABLE buffer(
code TINYINT UNSIGNED NOT NULL, 
name CHAR(20) NOT NULL, 
PRIMARY KEY(name, code)) ENGINE = INNODB 

我有上面的表格。我想以尽可能最快的方式执行以下操作:快速两表搜索?

在表buffer中添加新的code and name pair时,我想确保这两个对不存在于任何两个表中。 有没有真正快捷的方式来做到这一点,或者我必须先搜索表item,然后搜索表buffer,然后添加项目?

+1

使用触发器并让数据库处理它http://dev.mysql.com/doc/refman/5.0/en/triggers.html([如何防止在使用触发器时插入](http:// stackoverflow.com/questions/4255730/create-trigger-prevent-insert)) – AmazingDreams

+0

你能更具体吗? –

+0

如果您看[此处接受的答案](http://stackoverflow.com/a/4255782/1567737)80%的问题已得到解答,您只需将答案转换为适合您的需求。 – AmazingDreams

回答

2

以下教程检查(注册期间)用户名/电子邮件是否已被占用。

Username Availability Check using PHP and Jquery - YouHack.me

Check Username Availability during registeration - SourceCodester

看着上面的两个来源后,您会得到如何检查再生过程中的用户名是否可以居住,使用jQuery的Ajax功能的想法。 比你可以在你的应用程序中实现相同的功能,而不是用户名可用性,你会检查代码和名称(代码的名称)的存在。如果它存在,它将显示一条消息,表明该代码已经存在,如果它不存在,它将不会显示消息。

我希望这对你有所帮助。