ここにMySQLの新人が入ります。環境変数を格納するデータベースを構築しました。各値には、固有のclass
,designation
、およびvariable
が関連付けられており、それぞれに定義テーブルがあります。私は新しい変数を追加するときに、私は各定義テーブルから新しいテーブルにvariable_mappings
の外来キーをコピーするだけでなく、値を追加する必要があります。 variable_mappings
表は次のようになります。select into mysql
+----------------+--------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+----------------+--------------+------+-----+---------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| value | varchar(512) | NO | | NULL | |
| designation_id | int(11) | NO | MUL | NULL | |
| class_id | int(11) | NO | MUL | NULL | |
| variable_id | int(11) | NO | MUL | NULL | |
+----------------+--------------+------+-----+---------+----------------+
今変数を追加するためのコマンドは次のようなものになります。
INSERT INTO variable_mappings (variable_id, designation_id, class_id, value)
SELECT variable_definitions.id as 'variable',
designation_definitions.id as 'designation',
class_definitions.id as 'class'
FROM variable_definitions
JOIN designation_definitions on designation_definitions.name='development'
JOIN class_definitions on class_definitions.name='av-control'
WHERE variable_definitions.name='CONFIGURATION-DATABASE-MICROSERVICE-ADDRESS';
MySQLをvalue
にはデフォルト値はありませんと文句を言い。 variable_mappings
に行を追加するにはどうすればよいですか?
INSERT INTO variable_mappings (variable_id, designation_id, class_id)
SELECT variable_definitions.id as 'variable',
designation_definitions.id as 'designation',
class_definitions.id as 'class'
FROM variable_definitions
JOIN designation_definitions on designation_definitions.name='development'
JOIN class_definitions on class_definitions.name='av-control'
WHERE variable_definitions.name='CONFIGURATION-DATABASE-MICROSERVICE-ADDRESS';
またはSELECT文で
INSERT INTO variable_mappings (variable_id, designation_id, class_id, value)
SELECT variable_definitions.id as 'variable',
designation_definitions.id as 'designation',
class_definitions.id as 'class',
blablabla as 'value'
FROM variable_definitions
JOIN designation_definitions on designation_definitions.name='development'
JOIN class_definitions on class_definitions.name='av-control'
WHERE variable_definitions.name='CONFIGURATION-DATABASE-MICROSERVICE-ADDRESS';