Я уже создал таблицу Vehicle_Unit
CREATE TABLE vehicle_unit (
garage_code NUMERIC(2) NOT NULL,
vunit_id NUMERIC(6) NOT NULL,
vunit_purchase_price NUMERIC(7,2),
vunit_exhibition_flag CHAR(1) NOT NULL,
vehicle_insurance_id VARCHAR(20) NOT NULL,
vunit_rego VARCHAR(8) NOT NULL
);
И вставил в них некоторые значения:
INSERT INTO vehicle_unit(vunit_purchase_price,vunit_exhibition_flag,vehicle_insurance_id,vunit_rego,vunit_id, garage_code)
SELECT 50000.00, 'R', 'sports-ute-449-12b', 'RD3161',garage_count_vehicles, garage_code
FROM garage
WHERE garage_email='[email protected]';
Если я хочу добавить столбец NON NULL с именем condition_flag, как мне изменить эту действующую базу данных? Могу ли я использовать таблицу изменений? Но как мне вставить это новое значение?
Обновлено: я попробовал «Изменить таблицу», но получил сообщение об ошибке, в котором говорится, что таблица должна быть пустой, чтобы добавить обязательный (НЕ NULL) столбец.
Я пробовал изменить таблицу, но у меня есть таблица, которая должна быть пустой, чтобы добавить обязательный (НЕ NULL) столбец. И я действительно не думаю, что мне следует отбросить всю таблицу и воссоздать ее?
Хороший способ обойти это, чтобы дать столбцу значение по умолчанию, чтобы он не был пустым при изменении. Нравится alter table yourtable add yournewcol int default 1 not null;
Затем на своем UPDATE
вы можете установить это значение на все, что вам нравится в ваших существующих записях. В качестве альтернативы вы можете добавить без ограничения NOT NULL
, запустить UPDATE, чтобы установить значение, а затем еще раз ALTER, чтобы добавить ограничение.
Кстати, вы не должны использовать CHAR
. Используйте стандартный тип строки, то есть VARCHAR2
.
Перед оператором ALTER ... NOT NULL
обновите все существующие записи, чтобы они имели значение (если они уже не имеют значения). Затем введите свой ALTER ... NOT NULL
или, как уже рекомендовал JNevil, также добавьте предложение DEFAULT
(это избавит вас от изменения кода, который может не предоставлять значения во время INSERT
s).
Вы просто используете оператор
ALTER
так. Затем вы можете использовать оператор UPDATE, чтобы обновить существующие записи значениями для этого нового столбца, а также изменить существующий оператор INSERT для новых строк, чтобы они имели значения с этим новым столбцом.