如何在没有 SQL 手动查询命令的情况下从 phpMyAdmin 页面中的当前时间戳设置默认年份

How to set default year from current timestamp in phpMyAdmin page without SQL query command manually

我想存储奖学金数据库以供订阅对每个奖学金感兴趣的学生。但是我可以在 phpMyAdmin 页面中从 current_timestamp() 设置年份而无需手动输入 SQL 命令吗?

table定义包含。

ScholarshipID int primary auto_increment
Title varchar(250)
Paragraph varchar(5000)
Year year(4) default current_timestamp()
CreatedAt datetime default current_timestamp()
UpdatedAt datetime default current_timestamp() on update current_timestamp()

我发现 Year 行值作为字符串插入。

以及我保存插入数据的结果。

我预期的 SQL 查询。

INSERT INTO `scholarship_program` (`ScholarshipID`, `Title`, `Paragraph`, `Year`, `CreatedAt`, `UpdatedAt`) VALUES (NULL, 'หัวข้อข่าวทุนการศึกษา', 'เนื้อหาข่าวทุนการศึกษา\r\n- ใจความ\r\n- เนื้อหาละเอียด\r\n- สรุปเนื้อหา\r\nทิ้งท้าย', YEAR(current_timestamp()), current_timestamp(), current_timestamp());

来自 phpMyAdmin 的 SQL 查询结果。

INSERT INTO `scholarship_program` (`ScholarshipID`, `Title`, `Paragraph`, `Year`, `CreatedAt`, `UpdatedAt`) VALUES (NULL, 'หัวข้อข่าวทุนการศึกษา', 'เนื้อหาข่าวทุนการศึกษา\r\n- ใจความ\r\n- เนื้อหาละเอียด\r\n- สรุปเนื้อหา\r\nทิ้งท้าย', 'current_timestamp()', current_timestamp(), current_timestamp());

我尝试使用函数 YEAR,但出现错误。因为它将 current_timestamp() 视为字符串。

SQL查询。

INSERT INTO `scholarship_program` (`ScholarshipID`, `Title`, `Paragraph`, `Year`, `CreatedAt`, `UpdatedAt`) VALUES (NULL, 'Scholarship News Header.', 'Scholarship News Paragraph.', YEAR('current_timestamp()'), current_timestamp(), current_timestamp())

SQL说。 #1048 - Column 'Year' cannot be null

您可以改为使用 TRIGGER 为“”列提供默认值。

  1. 更改“年”列的数据类型。
ALTER TABLE scholarship_program MODIFY Year YEAR NULL;
  1. 设置触发器(“插入前”)。
DROP TRIGGER IF EXISTS `scholarship_program_insert_default_year`;

DELIMITER $$
CREATE TRIGGER scholarship_program_insert_default_year
BEFORE INSERT ON scholarship_program FOR EACH ROW 
BEGIN
    SET NEW.Year = TRIM(NEW.Year);
    
    IF (NEW.Year IS NULL) OR (NEW.Year = '') THEN
        SET NEW.Year=YEAR(CURRENT_TIMESTAMP);
    END IF;
END $$
DELIMITER ;
  1. 要插入新记录,您现在可以为“年”列传递 NULL 值。
INSERT INTO `scholarship_program` (`ScholarshipID`, `Title`, `Paragraph`, `Year`, `CreatedAt`, `UpdatedAt`) VALUES (NULL, 'Bsc in computer science', 'Learning about PCs...', NULL, current_timestamp(), current_timestamp());

您的“PHPMyAdmin”应用程序也可以正常运行,不会出现错误。