私は次のようにmySQLでテーブルを作成しました:
CREATE TABLE IF NOT EXISTS `LibraryManager`.`Card` (
`card_id` INT NOT NULL AUTO_INCREMENT,
`card_registerDate` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
`card_expiredDate` TIMESTAMP,
PRIMARY KEY (`card_id`))
ENGINE = InnoDB;
ここで、デフォルト値card_expiredDate
をcard_registerDate
+30またはCURRENT_TIMESTAMP + 30(登録日から30日)に設定します。それを行う方法はありますか?これを読んでいただきありがとうございます。
createステートメントを使用して有効期限列のデフォルト値を設定することはできません。代わりにトリガーを使用してください。そのためには、createステートメントを少し変更する必要があります。新しいクエリである有効期限列のデータ型を変更するだけです。
CREATE TABLE IF NOT EXISTS `LibraryManager`.`Card` (
`card_id` INT NOT NULL AUTO_INCREMENT,
`card_registerDate` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
`card_expiredDate` DATETIME,
PRIMARY KEY (`card_id`))
ENGINE = InnoDB;
次に、次のトリガーを起動します
CREATE TRIGGER before_insert_library_card
BEFORE INSERT ON `LibraryManager`.`Card`
FOR EACH ROW
SET new.card_expiredDate = adddate(CURRENT_TIMESTAMP,30);
お役に立てれば。
PS:トリガーは、挿入操作(またはそれらが前後に適用される操作)の速度を低下させます。これらの値は、php / pythonまたは使用しているバックエンドを使用してプログラムで設定することをお勧めします。
関連:
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加