既存のテーブルにカラムを追加する必要がありますが、どのような手法を取るべきか。
以下の2つの既存テーブルがあります。
MySQL
1CREATE TABLE `単価` ( 2 `適用日` date NOT NULL, 3 `製品グループ名` varchar(30) NOT NULL, 4 `製品コード` char(20) NOT NULL, 5 `金額` bigint(20) NOT NULL, 6 `登録日` date NOT NULL 7) ENGINE=InnoDB DEFAULT CHARSET=utf8; 8 9ALTER TABLE `単価` 10 ADD UNIQUE KEY `UNI` (`適用日`,`製品グループ名`,`製品コード`);
MySQL
1CREATE TABLE `グループ管理` ( 2 `製品グループ名` varchar(30) NOT NULL, 3 `請求書ナンバー` int(11) NOT NULL, 4 `生産ラインID` int(11) NOT NULL 5) ENGINE=InnoDB DEFAULT CHARSET=utf8; 6COMMIT;
「単価」のほうのテーブルで、適用日・製品グループ名・製品コードの3者が一致する重複を受け付けないようにしていますが、現状これだと不十分です。
製品コードと適用日が同一で、製品グループ名が異なる→登録可能
実際には、複数の製品グループが同一の「請求書ナンバー」に同居していて、別の製品として扱われていることがあり、このままだと単価の特定ができず請求書発行に支障があります。
(製品コードが同一であっても「別の製品である」という判別は、請求書ナンバーでしか区別ができない)
請求書ナンバーは、そのなかに複数の製品グループ名を内包していて、そのリストは「グループ管理」テーブルにあります。
そこで、「単価」テーブルに「請求書ナンバー」のカラムを追加したいのですが、
今後単価登録するデータに関しては登録時に当該製品グループ名が属する請求書ナンバーを挿入すればいいのですが、既存のデータを1件ずつUPDATEする手間も考えた時に、カラムの初期値を利用して上手い事できないものかと思うのですが、
MySQL
1ALTER TABLE `単価` ADD `請求書ナンバー` INT NOT NULL DEFAULT '@@@@' AFTER `適用日`;
@@@@この部分にどう記述すべきなのかがよくわからなくて止まっています。
回答1件
あなたの回答
tips
プレビュー