2013-07-04 47 views
0

我在MySQL數據庫的兩個表:如何檢查一個給定的數據是否存在於onther table MySql中?

  1. 船長(captain.email)
  2. 成員(member.email)

我要當隊長captain.email表插入數據再檢查如果members.email中的成員表數據已經退出,那麼captain.email中的數據不會插入隊長表中。

怎麼可能?

1.Captain:

CREATE TABLE `captain` (
`id` int(11) NOT NULL AUTO_INCREMENT, 
`username` varchar(255) NOT NULL, 
`username_canonical` varchar(255) NOT NULL, 
`email` varchar(255) NOT NULL, 
`email_canonical` varchar(255) NOT NULL, 
`enabled` tinyint(1) NOT NULL, 
`salt` varchar(255) NOT NULL, 
`password` varchar(255) NOT NULL, 
`last_login` datetime DEFAULT NULL, 
`locked` tinyint(1) NOT NULL, 
`expired` tinyint(1) NOT NULL, 
`expires_at` datetime DEFAULT NULL, 
`confirmation_token` varchar(255) DEFAULT NULL, 
`password_requested_at` datetime DEFAULT NULL, 
`roles` longtext NOT NULL COMMENT '(DC2Type:array)', 
`credentials_expired` tinyint(1) NOT NULL, 
`credentials_expire_at` datetime DEFAULT NULL, 
`name` varchar(255) DEFAULT NULL, 
PRIMARY KEY (`id`), 
UNIQUE KEY `UNIQ_957A647992FC23A8` (`username_canonical`), 
UNIQUE KEY `UNIQ_957A6479A0D96FBF` (`email_canonical`) 
) 

2.Members:

CREATE TABLE `members` (
`id` int(11) NOT NULL AUTO_INCREMENT, 
`team_id` int(11) DEFAULT NULL, 
`fos_user_id` int(11) DEFAULT NULL, 
`name` varchar(45) DEFAULT NULL, 
`email` varchar(45) DEFAULT NULL, 
`mobile` varchar(45) DEFAULT NULL, 
`role` varchar(255) DEFAULT NULL, 
PRIMARY KEY (`id`), 
UNIQUE KEY `email` (`email`), 
UNIQUE KEY `email_2` (`email`), 
KEY `IDX_45A0D2FF296CD8AE` (`team_id`), 
KEY `IDX_45A0D2FF8C20A0FB` (`fos_user_id`), 
CONSTRAINT `FK_45A0D2FF296CD8AE` FOREIGN KEY (`team_id`) REFERENCES `team` (`id`), 
CONSTRAINT `FK_45A0D2FF8C20A0FB` FOREIGN KEY (`fos_user_id`) REFERENCES `fos_user` (`id`) 
) 
+0

看看觸發器,你需要在船長表上插入觸發器之前的a。 –

+0

@Seth McClaine:1.如果電子郵件已存在,您將如何取消插入? 2.如果兩個查詢同時運行,您將如何保證需求? – zerkms

+0

這個問題對我來說還不清楚。可以多說一下表格,關係和輸入數據嗎? – Paul

回答

0

沒有辦法執行這樣的限制。

使用聲明性參照完整性(DRI),您可以創建一個表,其中包含構建唯一鍵所需的所有列。

相關問題