如何在没有 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 为“年”列提供默认值。
- 更改“年”列的数据类型。
ALTER TABLE scholarship_program MODIFY Year YEAR NULL;
- 设置触发器(“插入前”)。
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 ;
- 要插入新记录,您现在可以为“年”列传递
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”应用程序也可以正常运行,不会出现错误。
我想存储奖学金数据库以供订阅对每个奖学金感兴趣的学生。但是我可以在 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 为“年”列提供默认值。
- 更改“年”列的数据类型。
ALTER TABLE scholarship_program MODIFY Year YEAR NULL;
- 设置触发器(“插入前”)。
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 ;
- 要插入新记录,您现在可以为“年”列传递
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”应用程序也可以正常运行,不会出现错误。