我有一个有数千行的表.由于表最初不是使用created_at列构造的,因此无法获取其创建时间戳.尽管开始获取未来行的时间戳是至关重要的.
有没有办法我可以添加一个默认值为NOW()的时间戳列,以便它不会将值填充到以前的行,但仅用于未来的行?
如果我执行ALTER查询,它会使用时间戳填充所有行:
ALTER TABLE mytable ADD COLUMN created_at TIMESTAMP DEFAULT NOW()
Run Code Online (Sandbox Code Playgroud)
Phi*_*ing 129
您需要使用默认值添加列null,然后将列更改为默认值now().
ALTER TABLE mytable ADD COLUMN created_at TIMESTAMP;
ALTER TABLE mytable ALTER COLUMN created_at SET DEFAULT now();
Run Code Online (Sandbox Code Playgroud)
Ren*_*nzo 34
您可以使用alter table添加默认规则,
ALTER TABLE mytable ADD COLUMN created_at TIMESTAMP DEFAULT NOW()
Run Code Online (Sandbox Code Playgroud)
然后立即将所有当前现有行设置为null:
UPDATE mytable SET created_at = NULL
Run Code Online (Sandbox Code Playgroud)
然后从这一点开始DEFAULT就会生效.
小智 15
例如,我将创建一个users如下所示的表,并给出一个名为date默认值的列NOW()
create table users_parent (
user_id varchar(50),
full_name varchar(240),
login_id_1 varchar(50),
date timestamp NOT NULL DEFAULT NOW()
);
Run Code Online (Sandbox Code Playgroud)
谢谢
| 归档时间: |
|
| 查看次数: |
102101 次 |
| 最近记录: |