如何检查另一个表MySql中是否存在给定数据?

时间:2013-07-04 05:15:39

标签: mysql

我在MySql数据库中有两个表:

  1. 船长(captain.email)
  2. 会员(member.email)
  3. 我希望当队长表在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.成员:

    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`)
    )
    

1 个答案:

答案 0 :(得分:0)

无法强制执行此类约束。

使用声明性参照完整性(DRI),您可以创建一个表,其中包含构建唯一键所需的所有列。