0

私は2つのテーブルを持っていて、std_personalこのstd_educationように:

std_personal :
+----------------------+
| id |  name | family  |
+----------------------+

std_education :
+----------------------+ 
| related_std |  grade |
+----------------------+

std_education.related_stdstd_personal.id 1 つのクエリを使用してこれら 2 つの異なるテーブルにデータを挿入するにはどうすればよいですか? 私の問題は、std_personal.id挿入したいときに存在しないことですstd_education.related_std :)

4

4 に答える 4

2

1 つのクエリだけで 2 つのテーブルにデータを挿入することはできません。

まず最初のテーブルにデータを追加し、生成された主キーを取得してから 、この主キーをstd_personal使用して 2 番目のテーブルにデータを挿入する必要があります。std_education

外部キーの概念を導入することをお勧めします。

于 2013-04-06T11:24:26.297 に答える
1

スキーマを見ると、個人データが 1 つと、教育データが 1 つしかありません。通常、個人には複数の教育記録があります。そのことを念頭に置いて、std_personal と std_education の間に 1 対多の関係を使用する必要があります。そうすればいい

  • 取引を開始する
  • std_personal に挿入
  • 主キーを取得する
  • 個人の主キーを外部キーとして使用して std_education に挿入します
  • 取引終了

エラーが発生した場合は、try catch ブロックとロールバックを使用します。

于 2013-04-06T11:53:25.113 に答える
0

1つのクエリでそれを行うことはできません。可能だとは思いませんが、このようにしてください。

最初にstd_personalにデータを挿入します

insert into std_personal (id,name,family) values(0,'name','family');

次に、テーブルstd_personalの最後のレコードから ID を取得します

select id from std_personal order by id desc  limit 1;

最後に std_education にデータを挿入します。

insert into std_education (related_std ,grade) values(id_from_select, 'grade');
于 2013-04-06T11:48:17.713 に答える