我是MySQL和数据库的新手,所以如果这是一个新手问题,我很抱歉。我正在创建一个带有users表的MySQL数据库。其中一列是UserAccept
,另一列是UserAcceptWhen
。当他们登录使用C#构建的程序时,他们必须首先接受用户协议。如果他们单击Accept,然后进入,但问题是关于更新表。点击“接受”后,UserAccept
会从0更改为1,但如何以当前日期和时间更新UserAcceptWhen
?另外,除非UserAccept
列发生变化,否则我可以锁定该列的更改吗?
答案 0 :(得分:1)
MySQL中有一个很棒的函数叫NOW()
,它返回时间和日期。
UPDATE table SET UserAcceptWhen = NOW() WHERE id = 1;
答案 1 :(得分:1)
正如@Matt Clark所说,您可以使用MySQL NOW()函数来存储当前时间值。 一个小的附录是考虑使用触发器来更新UserAccept,当UserAccept发生变化时。 像这样:
DELIMITER //
CREATE TRIGGER UserAcceptedNOW BEFORE UPDATE ON user
FOR EACH ROW
BEGIN
IF (NEW.UserAccepted = 1) THEN
SET NEW.UserAcceptedWhen = NOW();
END IF;
END
//
不要忘记将UserAcceptWhen设置为Timestamp类型。
对于第二个问题:afaik你无法锁定一列进行更改。
通常情况下,使用数据库外部的逻辑(更容易转储数据库)更好,但它也是一个解决方案。