在mysql中创建两个与外键链接,插入,删除和更新的表

时间:2012-12-14 09:05:56

标签: mysql

我有一个场景,我必须创建一个包含以下字段的表

department_name,ministry_name,domain_name,coordinator_name,coordinator_email

现在,对于每个department_name,可以有多个coordinator_name,并且对应多个coordinator_email。

我无法在一个表(部门)中执行此操作,因为我无法在一行mysql中存储两个协调员名称及其协调员电子邮件。

所以我打算用department_name(主键),ministry_name,domain_name创建一个表(协调器) 第二个表与department_name(主键),coordinator_name,coordinator_email以及对部门的外键引用(department_name)

现在我如何使用insert语句,以便数据一次插入两个表中。类似地,我如何使用删除和更新语句...

请帮助......谢谢...

4 个答案:

答案 0 :(得分:0)

只是不清楚你的问题。你写了那个表Coordinator将department_name作为主键。这怎么可能?在Coordinator表中你不能将department_name作为foriegn键吗?如果我误解了你的问题,我很抱歉

答案 1 :(得分:0)

  1. 您可以使用一个表
  2. 部门A - 部门 - 域名 - 协调员A - 协调员电子邮件A

    部门A - 部门 - 域 - 协调员B - 协调员电子邮件B

    部门A - 部门 - 域 - 协调员C - 协调员电子邮件C

    B部 - 部 - 域 - 协调员A - 协调员电子邮件A

    如果您只是需要部门,您会忽略协调员的信息并按部门分组?除非你特别想要两张桌子?

    1. 您可以使用TRIGGERS来实现这一点,每次执行INSERT,UPDATE,DELETE时都会发生触发。

    2. 将其拆分为两个不同的表格

    3. 协调员:id,name,email,departmentId(Departments.id的外键) 部门:身份证,姓名,事工,领域

      然后外键将处理更新和删除(如果删除部门,将删除所有协调员)

      - 编辑

      然后首先循环部门:

      SELECT DISTINCT(department_name)FROM your_table

      然后第二个循环是显示每个部门的所有协调员

      SELECT * FROM your_table WHERE department_name =''

答案 2 :(得分:0)

首先,不要使用主键的名称,而是使用id作为键。拿你的部门,做一个id(自动增量),没有值,这样就可以做到这一点。然后生成附加到该部门名称的唯一ID,然后您可以使用此唯一ID在以后需要时调用。但是,您需要此ID才能将其他名称与此部门相关联。将部门名称保存在您创建唯一ID的一个表中,并使用另一个表,其中包含每个使用的值的id。并且您需要多个查询才能执行此操作。


部。 table:id(primary | auto inc)uid dept_name

坐标。 table:id(primary | auto inc)uid(来自dept。表)min_name coord_name coord_email

<?php
    mysql_query("
        insert into `dept` values(
            NULL,
            `$uid`,
            `$dept_name`
        )
    ");
    mysql_query("
        insert into `coord` values (
            NULL,
            `$uid`,
            `$coord_name`,
            `$coord_email`,
            `$ministry_name`
        )
    ");
?>

也许这为你解决了。

答案 3 :(得分:0)

如果您使用2个表格 表“部门” 列:id,name,ministry,domain

表“协调员” 列:id,name,email,departmentId

假设您与部门和协调员表之间存在关系。以下查询应根据部门名称

返回记录
select * from Coordinator 
     join Department on Coordinator.departmentId = Department.Id
Where Department.name = '' --- pass any name you want in single quotes

如果这对您有用,请告诉我