Мне нужно добавить новый столбец с именем date_id, используя concat_ws ('-', curdate, id) в той же таблице, id - это primarykey и auto_increment.
Как это сделать?
Я попытался добавить столбец и обновил его. это сработало, но когда я вставил какую-то новую строку, ошибка показала, что Filed 'id' не имеет значения по умолчанию.
Как это решить?
ALTER TABLE table1 ADD date_id VARCHAR(50);
UPDATE table1 SET date_id = CONCAT_WS('-',date_format(CURDATE(),'%Y%m%d'),id);
обновить вопрос
Я создал таблицу:
USE table_name;
CREATE TABLE IF NOT EXISTS `gzsrieQA`(
`id` INT(3) UNSIGNED ZEROFILL AUTO_INCREMENT,
`record_id` VARCHAR(50),
`date` date,
`pro_name` VARCHAR(50),
`error_info` VARCHAR(255),
`error_describe` VARCHAR(255),
`reason` VARCHAR(255),
`solution` VARCHAR(255),
`solution_file` BLOB,
`solution_file_name` VARCHAR(50),
PRIMARY KEY ( `id` )
)ENGINE=InnoDB DEFAULT CHARSET=utf8;
ALTER table_name AUTO_INCREMENT = 001;
UPDATE table_name SET record_id = CONCAT_WS('-','SRIE-DSJ-QA',date_format(CURDATE(),'%Y%m%d'),id);
Когда я вставляю в некоторые новые данные, результат показывает, что 'record_id' равен нулю. значит мне нужен триггер? Но вопрос в том, если я вставлю много данных, триггер будет слишком медленным. Есть ли какое-то решение, чтобы решить эту проблему, если я не использую триггер?
Например:
|id|record_id|name|
|-----|-----|-----|
|001| |ABC|
|002| |xyz|
# I want to get:
|id|record_id|name|
|-----|-----|-----|
|001|ABC001|ABC|
|002|xyz002|xyz|
# and when I insert into name=AAA, the result is:
|id|record_id|name|
|-----|-----|-----|
|001|ABC001|ABC|
|002|xyz002|xyz|
|003|aaa003|AAA|
СПАСИБО!