0

列「stu_id (主キー)」、「name (varchar)」、「grade_id (外部キー)」、および「age (int)」を持つデータベース テーブル「stu_inf」があります。

grade_level テーブルには、次の列 grade_level_id (主キー) と grade_level (varchar) があります。

すべての生徒に grade_id を割り当てました。年末には、grade_level を次の grade_id に変更する必要があります。たとえば、すべて 1 を 2 に変更し、すべて 2 を 3 に変更する必要があります。

データベースでこれらを手動で変更すると時間がかかり、grade_id がスキップされたり、一部の学生がまったく移動されないなどのエラーが発生しやすくなります。

PHPとmysqlを使用してこれを自動的に達成するにはどうすればよいですか。

4

2 に答える 2

1

UPDATE stu_int SET grade_id = grade_id + 1 WHERE grade_id < x

(x はあなたの最大 grade_level_id)、これにより、学生が最大学年に達した場合でも、外部キー違反を引き起こすことなくテーブルを更新できます。また、最高学年レベルに達した生徒を削除することもできます:

UPDATE stu_info SET grade_id = grade_id + 1

DELETE FROM stu_int WHERE grade_id = x

于 2013-10-26T12:54:42.967 に答える
0

これはcronジョブに役立ちます。

毎年、または必要に応じてスケジュールします

于 2013-10-26T12:13:50.613 に答える