Как заполнить SQL при создании?

Я хочу, чтобы после создания в моем таблице SQL уже были изначальные, дефолтные данные. Я реализую это так: при запуске приложения смотрю, пустая таблица или нет, и отталкиваясь от этого добавляю данные. Но этот способ мне кажется не очень правильным. Подскажите, как сделать это более красивым способом.


Ответы (1 шт):

Автор решения: 0xdb

Если в таблице всегда должна быть только одна строка со значениями по умолчанию, то создавайте таблицу как CTAS (create-table-as-select):

create table t1 as
    select 'value1' col1, 'value2' col2, 'value3' col3;


select * from t1;

col1    col2    col3
------  ------  ------
value1  value2  value3

Чтобы избежать ошибочной вставки или удаления используйте ограничения или триггеры. Что иммено, сильно зависит от брeнда СУБД. Вот воспроизводимый пример для SQLite:

create trigger delt1 delete on t1 
begin
    select raise (fail, 'illegal delete on t1');
end;

delete from t1;

illegal delete on t1

→ Ссылка