1.sql 3.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. DO $$
  2. begin
  3. -- Создаем таблицу званий
  4. create table if not exists ranks (id serial primary key, name varchar(32));
  5. -- Создаем таблицу пользователей
  6. create table if not exists users (id serial primary key, name varchar(64), rank_id integer references ranks(id));
  7. -- Заполняем звания
  8. if exists(select from ranks where name = 'Рядовой' limit 1) then
  9. raise notice 'Ranks values exist';
  10. else
  11. insert into ranks(name) values ('Рядовой');
  12. insert into ranks(name) values ('Ефрейтор');
  13. insert into ranks(name) values ('Младший сержант');
  14. insert into ranks(name) values ('Сержант');
  15. insert into ranks(name) values ('Старший сержант');
  16. insert into ranks(name) values ('Старшина');
  17. insert into ranks(name) values ('Прапорщик');
  18. insert into ranks(name) values ('Старший прапорщик');
  19. insert into ranks(name) values ('Младший лейтенант');
  20. insert into ranks(name) values ('Лейтенант');
  21. insert into ranks(name) values ('Старший лейтенант');
  22. insert into ranks(name) values ('Капитан');
  23. insert into ranks(name) values ('Майор');
  24. insert into ranks(name) values ('Подполковник');
  25. insert into ranks(name) values ('Полковник');
  26. insert into ranks(name) values ('Генерал майор');
  27. insert into ranks(name) values ('Генерал лейтенант');
  28. insert into ranks(name) values ('Генерал полковник');
  29. insert into ranks(name) values ('Генерал армии');
  30. insert into ranks(name) values ('Маршал России');
  31. end if;
  32. -- Обновляем username(varchar) -> user_id(integer) в measurement_batch
  33. if exists(select from information_schema.columns where table_name='measurement_batch' and column_name='user_id') then
  34. raise notice 'user_id column already exists in table measurement_batch';
  35. else
  36. alter table measurement_batch rename column username to user_id;
  37. alter table measurement_batch alter column user_id type integer using null;
  38. end if;
  39. -- Привязываем measurement_batch(user_id) -> users(id)
  40. if exists(select from information_schema.referential_constraints where constraint_name = 'measurement_batch_user_id_fkey') then
  41. raise notice 'Foreign key measurement_batch(user_id) -> users(id) exists';
  42. else
  43. alter table measurement_batch add foreign key(user_id) references users(id);
  44. end if;
  45. -- Заполняем тестовые данные:
  46. -- -- Пользователь
  47. if exists(select from users limit 1) then
  48. raise notice 'Test user exists';
  49. else
  50. insert into users(name, rank_id) values ('Левитан Всеволод Романович', (select id from ranks order by id desc limit 1));
  51. end if;
  52. END $$;
  53. DO $$
  54. begin
  55. -- -- Измерение
  56. if (select count(id) from measurement_batch limit 1) > 0 then
  57. raise notice 'Test batch exists';
  58. else
  59. insert into measurement_batch(start_period, user_id, pos_x, pos_y) values (now(), (select id from users limit 1), 69.00, 42.00);
  60. end if;
  61. END$$;