【问题标题】:Transferring data with Foreign Key constraint使用外键约束传输数据
【发布时间】:2013-04-07 03:57:19
【问题描述】:

我有四张桌子

交易(pay_id,pay_date,cust_name,cust_phone,cust_adrs,prod_name,amt,qty) 及其 3 个标准化版本

1. customer(cust_id, cust_name, cust_phone, cust_add)
2. product(prod_id,prod_name)

(** cust_id 和 prod_id 是主键,我已经将数据从 Transaction 传输到 cutomer 和 product。主键使用 SEQUENCES 填充。**)

3. payment(pay_id,pay_date,amt,qty,prod_id,cust_id)

现在,我想将数据从 Transaction 传输到 payment,但 cust_id、prod_id 是支付表中的外键。如何在不损害约束的情况下将数据从交易传输到支付?

【问题讨论】:

  • 因为 cust_name 和 prod_name 可能不是唯一的,你会遇到问题...
  • 我建议你重新学习数据库规范化的基本概念,然后思考你的问题......你会得到答案......
  • 您使用的是哪个 DBMS?甲骨文还是 SQL Server?是否要将数据从一个 DBMS 传输到另一个?
  • 我正在使用 sql developer 11g。我想在外键约束不变的情况下将数据从一个表传输到另一个表。

标签: sql sql-server plsql oracle11g plsqldeveloper


【解决方案1】:

与客户和产品进行交易并插入付款

INSERT payment(pay_date,amt,qty,prod_id,cust_id)
SELECT T.pay_date,T.amt,T.qty,P.prod_id,C.cust_id
FROM Transaction T
    JOIN customer C
       ON T.cust_name = C.cust_name
          AND T.cust_phone = C.cust_phone
          AND T.cust_adrs = C.cust_adrs
    JOIN product P
        ON C.prod_name = P.prod_name

【讨论】:

    猜你喜欢
    • 2013-12-17
    • 1970-01-01
    • 2018-01-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-25
    • 2021-11-03
    相关资源
    最近更新 更多