1

私はこの状況を抱えています。別のテーブルへの外部キー制約を持つテーブルに新しい行を挿入したいと考えています。新しい行を挿入すると、親テーブルから取得される外部キー列を除いて、ユーザー入力から取得された新しい値があります。外部キーは、親テーブルの auto_increment 主キーです。これは説明のために最小化されたスキーマで、関連する列のみが表示されています。

CREATE TABLE CUSTOMER (
  CUSTOMER_CODE INTEGER NOT NULL AUTO_INCREMENT,
  FIRST_NAME VARCHAR (20) NOT NULL,
  EMAIL VARCHAR (50) UNIQUE NOT NULL,
      .
  .
  .


  PRIMARY KEY (CUSTOMER_CODE)
);

CREATE TABLE BOOKING (  
  BOOKING_CODE INTEGER NOT NULL AUTO_INCREMENT,
  CUSTOMER_CODE INTEGER NOT NULL,
  BOOKING_DATE DATE NOT NULL,
  .
  .
  .

  PRIMARY KEY (RESERVATION_CODE),
  CONSTRAINT BOOKING_CUSTOMER_FK FOREIGN KEY (CUSTOMER_CODE) REFERENCES CUSTOMER   
                                                                        (CUSTOMER_CODE)
);

booking_date残りの列 ( など)のシステムとのユーザーの対話に基づいて生成された値を含む新しい行を BOOKING テーブルにフィードする挿入ステートメントを知りたいのですが、取得した電子メールを含む句でcustomer_code顧客テーブルから取得しますwhere email=ユーザー入力から。

4

1 に答える 1

1

2 つのステートメントを結合するには、次のようにINSERT ... SELECTを使用できます。

INSERT INTO
    BOOKING
    (CUSTOMER_CODE, BOOKING_DATE)
SELECT
    CUSTOMER_CODE, $booking_date
FROM
    CUSTOMER
WHERE
    CUSTOMER.email=$email

値をハードコーディングして SELECT に入力し、適切な電子メールの CUSTOMER_CODE をフェッチします。ただし、SQL インジェクションから保護されていることを確認してください。

于 2013-05-16T10:30:12.657 に答える