Ответ 1
Вам нужно добавить столбец со значением по умолчанию null
, а затем изменить столбец по умолчанию now()
.
ALTER TABLE mytable ADD COLUMN created_at TIMESTAMP;
ALTER TABLE mytable ALTER COLUMN created_at SET DEFAULT now();
У меня есть таблица с тысячами строк. Поскольку таблица не была построена с использованием столбца created_at изначально, нет способа получить временную метку создания. Крайне важно, однако, начать получать метки времени для будущих строк.
Есть ли способ добавить столбец timestamp со значением по умолчанию NOW(), чтобы он не заполнял значения для предыдущих строк, а только для будущих?
Если я выполняю запрос ALTER
, он заполняет все строки меткой времени:
ALTER TABLE mytable ADD COLUMN created_at TIMESTAMP DEFAULT NOW()
Вам нужно добавить столбец со значением по умолчанию null
, а затем изменить столбец по умолчанию now()
.
ALTER TABLE mytable ADD COLUMN created_at TIMESTAMP;
ALTER TABLE mytable ALTER COLUMN created_at SET DEFAULT now();
Вы можете добавить правило по умолчанию с помощью таблицы alter,
ALTER TABLE mytable ADD COLUMN created_at TIMESTAMP DEFAULT NOW()
то сразу же установите для null все текущие существующие строки:
UPDATE mytable SET created_at = NULL
Затем с этой точки на DEFAULT
вступят в силу.
Попробуйте что-то вроде: -
ALTER TABLE table_name ADD CONSTRAINT [DF_table_name_Created]
DEFAULT (getdate()) FOR [created_at];
заменив table_name
на имя вашей таблицы.
Например, я создам таблицу с именем 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()
);
Спасибо