我有一个有数千行的表.由于表最初不是使用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 次  |  
        
|   最近记录:  |