При создании таблицы в SQLite я хочу определить значение по умолчанию для столбца, используя значение из другой таблицы (поскольку этот столбец является внешним ключом). Что-то вроде этого:Установка значения по умолчанию с использованием данных из другой таблицы
CREATE TABLE Test_1(A1 INTEGER PRIMARY KEY, B1 TEXT NOT NULL);
CREATE TABLE Test_2(A2 INTEGER PRIMARY KEY, B2 INTEGER NOT NULL DEFAULT [a value in column A1 of Test_1]);
Я предполагаю, что Test_1
уже заполнена записями, что обеспечивает возможные значения B2
в Test_2
таблице. Например, это могут быть некоторые константы, такие как «Создано», «Выполняется», «Приостановлено», «Готово» для столбца «Статус» (то есть B2
).
Я могу, конечно, выбрать первичный ключ значения от Test_1
и жесткий код его в качестве значения по умолчанию для B2
, но это чревато ошибками, если я изменю данные Test_1
позже. В то же время мы не можем использовать оператор SELECT
внутри CREATE
.
Если это невозможно в SQLite, возможно ли это для других механизмов SQL? Или, в более общем плане, это что-то, что должно выполняться логикой приложения, а не дизайном базы данных?
Я думаю, что у вас есть смутное ожидание внешних ключей. Когда вы вставляете запись в Test_1, новая запись в Test_2 НЕ создается автоматически. Вы можете вставить несколько записей в Test_1. Когда пришло время вставить записи в Test_2 какое значение вам нужно выбрать из A1? Внешний ключ не означает отношения «один-к-одному» – cha
@cha, спасибо за комментарий. Я предполагаю, что записи в 'Test_1' уже существуют, например. они могут быть некоторыми константами для определенного столбца/поля в 'Test_2'. Я просто хочу использовать одну из констант, определенных в «Test_1», в качестве значения по умолчанию для соответствующего столбца в таблице «Test_2». – MLister
@cha, см. Править выше, где я приведу пример, чтобы прояснить контекст. – MLister