我遇到了一个问题,我试图创建一个从表中的列1复制到列2的cron作业。我需要使它,如果列1的数据已经在列2然后什么都不做,如果不是添加到列2。
有没有人对如何实现这一点有任何提示或建议?
当列1中的数据等于列2中的数据时,更新行有什么害处呢?
UPDATE table SET column2 = column1
数据总是被设置在第2列,但当它已经是相同的数据时,第1列没有改变
看了你的评论后,我建议如下:
删除列2并创建一个名为previous_usernames
的新表向该表添加3列id
, user_id
, username
在用户名更改时更新该表,而不是在更改后使用cron。这太复杂了。
首先运行这个查询INSERT INTO previous_usernames (user_id, username) (SELECT id, username FROM users WHERE id = ?)
然后运行这个查询UPDATE users SET username = ? WHERE id = ?
当你想确保旧用户名被正确存储时,你可以使用transactions
看了你的新评论后,我建议如下
您可以在username和GUID列上创建一个UNIQUE索引,并尝试插入每一行。当用户名和GUID组合存在时,查询将失败并且不会插入记录。
如何在MySQL中指定多列的唯一约束?