1

イベント用のテーブルがあり、ticketing_information 用の新しいテーブルを作成しました。イベント テーブル内の各イベントには、一意の ID によって参照される ticketing_information が必要です。私はSQLを初めて使用するので、これが非常に基本的/繰り返しの質問である場合はご容赦ください。ただし、既存のすべてのイベントのチケット情報テーブルに新しい行を追加し、イベントに生成されたチケット情報IDを与えるにはどうすればよいですか? ?

それが役立つ場合は、私のSQLの一部が添付されています:

CREATE TABLE `ticketing_information` (
  `id` INT(10) unsigned NOT NULL AUTO_INCREMENT,
  `tickets_available` BOOLEAN DEFAULT TRUE NOT NULL,
  `ticketing_url` VARCHAR(2000) DEFAULT NULL,
  `additional_info_url` VARCHAR(2000) DEFAULT NULL,
  PRIMARY KEY (`id`);)
ENGINE = InnoDB
DEFAULT CHARACTER SET = utf8; 

ALTER TABLE event
ADD COLUMN ticketing_information_id Int(10) unsigned DEFAULT NULL;

(これはコードの非常に簡素化されたバージョンですが、私が望む動作を説明するのに役立つはずです)

私はそれが次のようなものであるべきだと思っていました

UPDATE event SET
ticketing_information_id = SELECT `id` FROM `ticketing_information` WHERE <some way of making a new ticketing_information?>;

しかし、私は自分が何をしているのか本当に知りません:)

4

1 に答える 1

2

Null 非許容の新しい列を既存のテーブルに追加するようなことを実行する方法は次のとおりです。

  • 最初のステップでその列をnull可能として追加します。そうしないと、非null制約に違反するため、rdbmsでテーブルを変更できません。

  • 新しい列を必要なデータに更新する

    UPDATE event e 
    SET e.ticketing_information_id = (SELECT `id` FROM `ticketing_information` WHERE id = e.id)
    

    更新では、現在更新中の行を内部選択に伝える必要があるため、内部選択でその特定の行のデータのみをフィルタリングできます。

  • 列を null 以外に変更する

于 2013-11-12T11:40:58.013 に答える