Advertisement
madrahimov

Untitled

Apr 9th, 2015
321
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
SQL 8.68 KB | None | 0 0
  1. -- перенос клиентов в отдельную базу данных
  2.  
  3. -- 1 - делаем бекап таблицы клиентов
  4.  
  5. -- 2 - удаляем все связи
  6.  
  7. ALTER TABLE bill.bill_clients DROP CONSTRAINT bill_bill_clients_client_id_fkey;
  8.  
  9. ALTER TABLE bill.bills DROP CONSTRAINT bill_bills_client_id_fkey;
  10.  
  11. ALTER TABLE bill.online_orders DROP CONSTRAINT bill_online_orders_client_id_fkey;
  12.  
  13. ALTER TABLE restaurant.client_cards DROP CONSTRAINT restaurant_client_cards_client_id_fkey;
  14.  
  15. ALTER TABLE restaurant.client_restaurant_codes DROP CONSTRAINT restaurant_client_restaurant_codes_client_id_fkey;
  16.  
  17. ALTER TABLE restaurant.client_restaurants DROP CONSTRAINT restaurant_client_restaurants_client_id_fkey;
  18.  
  19. ALTER TABLE restaurant.table_reserveds DROP CONSTRAINT restaurant_table_reserveds_client_id_fkey;
  20.  
  21. DROP TRIGGER update_or_insert_sync_objects ON clients;
  22.  
  23. -- 3 - удаляем таблицу clients
  24.  
  25. -- 4 - создаем новую базу данных clients
  26.  
  27. -- 5 - создаем таблицу clients в новой базе данных
  28.       CREATE TABLE clients
  29.       (
  30.         id uuid NOT NULL,
  31.         first_name CHARACTER VARYING(100),
  32.         last_name CHARACTER VARYING(50),
  33.         patronymic CHARACTER VARYING(50),
  34.         email CHARACTER VARYING(100),
  35.         sex BOOLEAN DEFAULT TRUE,
  36.         phone CHARACTER VARYING(50),
  37.         birthday DATE,
  38.         created_at TIMESTAMP WITHOUT TIME zone NOT NULL,
  39.         updated_at TIMESTAMP WITHOUT TIME zone NOT NULL,
  40.         is_activated BOOLEAN NOT NULL DEFAULT FALSE,
  41.         sms_code CHARACTER VARYING(10),
  42.         sms_code_send_at TIMESTAMP WITHOUT TIME zone,
  43.         token CHARACTER VARYING(255),
  44.         token_created_at CHARACTER VARYING(255),
  45.         encrypted_password CHARACTER VARYING(255) NOT NULL DEFAULT ''::CHARACTER VARYING,
  46.         password_salt CHARACTER VARYING(255),
  47.         reset_password_token CHARACTER VARYING(255),
  48.         reset_password_sent_at TIMESTAMP WITHOUT TIME zone,
  49.         remember_created_at TIMESTAMP WITHOUT TIME zone,
  50.         sign_in_count INTEGER DEFAULT 0,
  51.         current_sign_in_at TIMESTAMP WITHOUT TIME zone,
  52.         last_sign_in_at TIMESTAMP WITHOUT TIME zone,
  53.         current_sign_in_ip CHARACTER VARYING(255),
  54.         last_sign_in_ip CHARACTER VARYING(255),
  55.         confirmation_token CHARACTER VARYING(255),
  56.         confirmed_at TIMESTAMP WITHOUT TIME zone,
  57.         confirmation_sent_at TIMESTAMP WITHOUT TIME zone,
  58.         unconfirmed_email CHARACTER VARYING(255),
  59.         authentication_token CHARACTER VARYING(255),
  60.         CONSTRAINT clients_pkey PRIMARY KEY (id)
  61.       )
  62.       WITH (
  63.         OIDS=FALSE
  64.       );
  65.       ALTER TABLE clients
  66.         OWNER TO developer;
  67.  
  68.       -- Index: index_clients_on_authentication_token
  69.  
  70.       -- DROP INDEX index_clients_on_authentication_token;
  71.  
  72.       CREATE UNIQUE INDEX index_clients_on_authentication_token
  73.         ON clients
  74.         USING btree
  75.         (authentication_token COLLATE pg_catalog."default");
  76.  
  77.       -- Index: index_clients_on_confirmation_token
  78.  
  79.       -- DROP INDEX index_clients_on_confirmation_token;
  80.  
  81.       CREATE UNIQUE INDEX index_clients_on_confirmation_token
  82.         ON clients
  83.         USING btree
  84.         (confirmation_token COLLATE pg_catalog."default");
  85.  
  86.       -- Index: index_clients_on_email
  87.  
  88.       -- DROP INDEX index_clients_on_email;
  89.  
  90.       CREATE UNIQUE INDEX index_clients_on_email
  91.         ON clients
  92.         USING btree
  93.         (email COLLATE pg_catalog."default");
  94.  
  95.       -- Index: index_clients_on_first_name
  96.  
  97.       -- DROP INDEX index_clients_on_first_name;
  98.  
  99.       CREATE INDEX index_clients_on_first_name
  100.         ON clients
  101.         USING btree
  102.         (first_name COLLATE pg_catalog."default");
  103.  
  104.       -- Index: index_clients_on_is_activated
  105.  
  106.       -- DROP INDEX index_clients_on_is_activated;
  107.  
  108.       CREATE INDEX index_clients_on_is_activated
  109.         ON clients
  110.         USING btree
  111.         (is_activated);
  112.  
  113.       -- Index: index_clients_on_reset_password_token
  114.  
  115.       -- DROP INDEX index_clients_on_reset_password_token;
  116.  
  117.       CREATE UNIQUE INDEX index_clients_on_reset_password_token
  118.         ON clients
  119.         USING btree
  120.         (reset_password_token COLLATE pg_catalog."default");
  121.  
  122.       -- Index: index_clients_on_sms_code
  123.  
  124.       -- DROP INDEX index_clients_on_sms_code;
  125.  
  126.       CREATE UNIQUE INDEX index_clients_on_sms_code
  127.         ON clients
  128.         USING btree
  129.         (sms_code COLLATE pg_catalog."default");
  130.  
  131.       -- Index: index_clients_on_token
  132.  
  133.       -- DROP INDEX index_clients_on_token;
  134.  
  135.       CREATE UNIQUE INDEX index_clients_on_token
  136.         ON clients
  137.         USING btree
  138.         (token COLLATE pg_catalog."default");
  139.  
  140. -- 6 - восстанавливаем таблицу clients с бекапа таблицы
  141. -- 7 - настраивам связь в старых базах данных на новою базу данных
  142.     -- создание расширения
  143.     CREATE EXTENSION postgres_fdw;
  144.  
  145.     -- добавление внешнего сервера
  146.     CREATE SERVER clients_server FOREIGN DATA WRAPPER postgres_fdw OPTIONS ( host 'localhost', dbname 'clients' );
  147.  
  148.     -- отображения пользователя
  149.     CREATE USER MAPPING FOR PUBLIC SERVER fdb_server OPTIONS ( password '' );
  150.  
  151.     -- создание внешней таблицы
  152.     CREATE FOREIGN TABLE clients (
  153.         id uuid NOT NULL,
  154.         first_name CHARACTER VARYING(100),
  155.         last_name CHARACTER VARYING(50),
  156.         patronymic CHARACTER VARYING(50),
  157.         email CHARACTER VARYING(100),
  158.         sex BOOLEAN DEFAULT TRUE,
  159.         phone CHARACTER VARYING(50),
  160.         birthday DATE,
  161.         created_at TIMESTAMP WITHOUT TIME zone NOT NULL,
  162.         updated_at TIMESTAMP WITHOUT TIME zone NOT NULL,
  163.         is_activated BOOLEAN NOT NULL DEFAULT FALSE,
  164.         sms_code CHARACTER VARYING(10),
  165.         sms_code_send_at TIMESTAMP WITHOUT TIME zone,
  166.         token CHARACTER VARYING(255),
  167.         token_created_at CHARACTER VARYING(255),
  168.         encrypted_password CHARACTER VARYING(255) NOT NULL DEFAULT ''::CHARACTER VARYING,
  169.         password_salt CHARACTER VARYING(255),
  170.         reset_password_token CHARACTER VARYING(255),
  171.         reset_password_sent_at TIMESTAMP WITHOUT TIME zone,
  172.         remember_created_at TIMESTAMP WITHOUT TIME zone,
  173.         sign_in_count INTEGER DEFAULT 0,
  174.         current_sign_in_at TIMESTAMP WITHOUT TIME zone,
  175.         last_sign_in_at TIMESTAMP WITHOUT TIME zone,
  176.         current_sign_in_ip CHARACTER VARYING(255),
  177.         last_sign_in_ip CHARACTER VARYING(255),
  178.         confirmation_token CHARACTER VARYING(255),
  179.         confirmed_at TIMESTAMP WITHOUT TIME zone,
  180.         confirmation_sent_at TIMESTAMP WITHOUT TIME zone,
  181.         unconfirmed_email CHARACTER VARYING(255),
  182.         authentication_token CHARACTER VARYING(255)
  183.  
  184.      ) SERVER clients_server OPTIONS ( TABLE_NAME 'clients' );
  185.  
  186.  
  187. -- 8 создаем связи внешних ключей для таблицы
  188.     ALTER TABLE bill.bill_clients
  189.       ADD CONSTRAINT bill_bill_clients_client_id_fkey FOREIGN KEY (client_id)
  190.           REFERENCES clients (id) MATCH SIMPLE
  191.           ON UPDATE CASCADE ON DELETE CASCADE;
  192.  
  193.     ALTER TABLE bill.bills
  194.       ADD CONSTRAINT bill_bills_client_id_fkey FOREIGN KEY (client_id)
  195.           REFERENCES clients (id) MATCH SIMPLE
  196.           ON UPDATE NO ACTION ON DELETE NO ACTION;
  197.  
  198.     ALTER TABLE bill.online_orders
  199.       ADD CONSTRAINT bill_online_orders_client_id_fkey FOREIGN KEY (client_id)
  200.           REFERENCES clients (id) MATCH SIMPLE
  201.           ON UPDATE NO ACTION ON DELETE NO ACTION;
  202.  
  203.     ALTER TABLE restaurant.client_cards
  204.       ADD CONSTRAINT restaurant_client_cards_client_id_fkey FOREIGN KEY (client_id)
  205.           REFERENCES clients (id) MATCH SIMPLE
  206.           ON UPDATE CASCADE ON DELETE CASCADE;
  207.  
  208.  
  209.     ALTER TABLE restaurant.client_restaurant_codes
  210.       ADD CONSTRAINT restaurant_client_restaurant_codes_client_id_fkey FOREIGN KEY (client_id)
  211.           REFERENCES clients (id) MATCH SIMPLE
  212.           ON UPDATE CASCADE ON DELETE CASCADE;
  213.  
  214.  
  215.     ALTER TABLE restaurant.client_restaurants
  216.       ADD CONSTRAINT restaurant_client_restaurants_client_id_fkey FOREIGN KEY (client_id)
  217.           REFERENCES clients (id) MATCH SIMPLE
  218.           ON UPDATE CASCADE ON DELETE CASCADE;
  219.  
  220.     ALTER TABLE restaurant.table_reserveds
  221.       ADD CONSTRAINT restaurant_table_reserveds_client_id_fkey FOREIGN KEY (client_id)
  222.           REFERENCES clients (id) MATCH SIMPLE
  223.           ON UPDATE CASCADE ON DELETE CASCADE;
  224.  
  225.     CREATE TRIGGER update_or_insert_sync_objects
  226.       AFTER INSERT OR UPDATE OR DELETE
  227.       ON clients
  228.       FOR EACH ROW
  229.       EXECUTE PROCEDURE remove_from_device_send_xmls();
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement