我有一个有数千行的表。由于表最初不是使用created_at列构造的,因此无法获取其创建时间戳。尽管开始获取未来行的时间戳是至关重要的。
有没有办法可以添加一个默认值为NOW()的时间戳列,以便它不会将值填充到以前的行,而只会填充以后的行?
如果我执行ALTER
查询,它会使用时间戳填充所有行:
ALTER TABLE mytable ADD COLUMN created_at TIMESTAMP DEFAULT NOW()
答案 0 :(得分:27)
您可以使用alter table
添加默认规则ALTER TABLE mytable ADD COLUMN created_at TIMESTAMP DEFAULT NOW()
然后立即将所有当前现有行设置为null:
UPDATE mytable SET created_at = NULL
然后从DEFAULT
开始生效。
答案 1 :(得分:0)
尝试类似: -
ALTER TABLE table_name ADD CONSTRAINT [DF_table_name_Created]
DEFAULT (getdate()) FOR [created_at];
将table_name
替换为您的表名。
答案 2 :(得分:-1)
例如,我将如下创建一个名为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()
);
谢谢