home *** CD-ROM | disk | FTP | other *** search
/ PC World 1998 October / PCWorld_1998-10_cd.bin / software / prehled / komix / DATA.Z / salespub.sql < prev    next >
Text File  |  1997-05-27  |  2KB  |  60 lines

  1. % Add a region column to sales_order_items so the
  2. % table can be partitioned by region.
  3.  
  4. ALTER TABLE sales_order_items ADD region CHAR(7);
  5.  
  6. % Set new region column for existing sales_orders.
  7.  
  8. UPDATE sales_order_items 
  9.     SET region = ( SELECT region FROM sales_order
  10.            WHERE sales_order_items.id = sales_order.id );
  11.  
  12. % Create triggers to automatically maintain the new region column
  13. % so that applications do not need to be aware of it.
  14.   
  15. CREATE TRIGGER set_order_item_region BEFORE INSERT 
  16.     ON sales_order_items
  17.     REFERENCING NEW AS new_item
  18.     FOR EACH ROW
  19.     BEGIN
  20.       SET new_item.region = ( SELECT region FROM sales_order
  21.     WHERE sales_order.id = new_item.id )
  22.     END;
  23.  
  24. CREATE TRIGGER update_order_items_region AFTER UPDATE OF region
  25.     ON sales_order
  26.     REFERENCING NEW AS new_order
  27.     FOR EACH ROW
  28.     BEGIN
  29.       UPDATE sales_order_items SET region=new_order.region
  30.     WHERE sales_order_items.id=new_order.id
  31.     END;
  32.     
  33. % Add a default value for fin_code_id column because the fin_code
  34. % table is not included in the publication.
  35.  
  36. ALTER TABLE sales_order MODIFY fin_code_id DEFAULT 'r1';
  37.  
  38. % Create a publication that includes 5 tables:
  39. %   - the complete customer and product tables
  40. %   - sales_order and sales_order_items subscribed by region 
  41. %   - selected columns from the employee table
  42.  
  43. CREATE PUBLICATION sales(
  44.     TABLE customer,
  45.     TABLE product,
  46.     TABLE sales_order SUBSCRIBE BY region,
  47.     TABLE sales_order_items SUBSCRIBE BY region,
  48.     TABLE employee(emp_id,emp_fname,emp_lname,dept_id) WHERE dept_id=200);
  49.     
  50. % Set up userids for replication.
  51.   
  52. CREATE REMOTE TYPE FILE ADDRESS 'COMPANY';
  53. GRANT PUBLISH TO "dba";
  54. GRANT CONNECT TO east IDENTIFIED BY east;
  55. GRANT REMOTE TO east TYPE FILE ADDRESS 'east';
  56.  
  57. % Create a subscription for the eastern sales office.
  58.  
  59. CREATE SUBSCRIPTION TO sales('Eastern') FOR east;
  60.