ホームページ  >  記事  >  データベース  >  MySQL で CURRENT_TIMESTAMP を使用して複数の TIMESTAMP カラムを管理する方法

MySQL で CURRENT_TIMESTAMP を使用して複数の TIMESTAMP カラムを管理する方法

Susan Sarandon
Susan Sarandonオリジナル
2024-11-01 02:53:28766ブラウズ

How to Manage Multiple TIMESTAMP Columns with CURRENT_TIMESTAMP in MySQL?

CURRENT_TIMESTAMP を使用した複数の TIMESTAMP カラムの管理

MySQL では、CURRENT_TIMESTAMP のデフォルト値を使用して複数の TIMESTAMP カラムを定義すると、「テーブル定義が正しくありません」というエラーが発生する可能性があります; DEFAULT 句または ON UPDATE 句に CURRENT_TIMESTAMP を持つ TIMESTAMP 列は 1 つだけ存在できます。この制限を克服するには、最近の MySQL エディション (例: 5.6.25) で次のアプローチを検討してください。

解決策:

テーブル定義を次のように変更します。

<code class="sql">CREATE TABLE `msgs` (
    `id` INT PRIMARY KEY AUTO_INCREMENT,
    `msg` VARCHAR(256),
    `ts_create` TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    `ts_update` TIMESTAMP NOT NULL,
    CONSTRAINT UPDATE_ON_CHANGE_ts_update
        FOREIGN KEY (`ts_update`) REFERENCES `msgs` (`ts_create`)
        ON DELETE SET NULL
        ON UPDATE CURRENT_TIMESTAMP
)</code>

この変更されたスキーマでは:

  • ts_create は CURRENT_TIMESTAMP デフォルトを持つ通常の TIMESTAMP 列として残ります。
  • ts_update は NOT NULL 制約を持つ TIMESTAMP 列として定義されます.
  • 外部キー制約が ts_update と ts_create の間に作成され、ts_create から ts_update へのカスケード更新が可能になります。
  • ON UPDATE CURRENT_TIMESTAMP アクションが外部キー制約を介して ts_update に適用され、 ts_create が変更されるたびに、ts_update 列が現在のタイムスタンプに更新されるということです。

このアプローチにより、MySQL エラーを回避しながら、レコードの作成と更新のタイムスタンプの両方を追跡するという望ましい動作を維持できます。

以上がMySQL で CURRENT_TIMESTAMP を使用して複数の TIMESTAMP カラムを管理する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。