home *** CD-ROM | disk | FTP | other *** search
/ PC World 1997 November / PCWorld_1997-11_cd.bin / software / programy / gratex / REPORTDB.SQL < prev   
Text File  |  1997-08-12  |  32KB  |  939 lines

  1. use patrik
  2. go
  3. CREATE PROCEDURE PatrikDropTable @name varchar(32)
  4. AS
  5.     DECLARE  @cname varchar(32), @tname varchar(32), @s varchar(255)
  6.     DECLARE ahoj insensitive CURSOR FOR
  7.        SELECT OBJECT_NAME(constid), OBJECT_NAME(fkeyid) FROM sysreferences WHERE rkeyid=OBJECT_ID(@name) FOR READ ONLY
  8.     OPEN ahoj
  9. __fetch:
  10.     FETCH NEXT FROM ahoj INTO @cname, @tname
  11.     IF @@FETCH_STATUS!=0 GOTO __end
  12.     SELECT @s='ALTER TABLE '+@tname+' DROP CONSTRAINT '+@cname
  13.     exec (@s)
  14.     GOTO __fetch
  15. __end:
  16.     CLOSE ahoj
  17.     DEALLOCATE ahoj
  18.     SELECT @s='DROP TABLE '+@name
  19.     exec (@s)
  20. GO
  21. IF EXISTS(SELECT * FROM sysobjects WHERE name='orderby') EXEC PatrikDropTable 'orderby'
  22. GO
  23. IF EXISTS(SELECT * FROM sysobjects WHERE name='graph') EXEC PatrikDropTable 'graph'
  24. GO
  25. IF EXISTS(SELECT * FROM sysobjects WHERE name='keys') EXEC PatrikDropTable 'keys'
  26. GO
  27. IF EXISTS(SELECT * FROM sysobjects WHERE name='report') EXEC PatrikDropTable 'report'
  28. GO
  29. IF EXISTS(SELECT * FROM sysobjects WHERE name='object') EXEC PatrikDropTable 'object'
  30. GO
  31. IF EXISTS(SELECT * FROM sysobjects WHERE name='param') EXEC PatrikDropTable 'param'
  32. GO
  33. IF EXISTS(SELECT * FROM sysobjects WHERE name='graph_pos') EXEC PatrikDropTable 'graph_pos'
  34. GO
  35. IF EXISTS(SELECT * FROM sysobjects WHERE name='graph_attribute') EXEC PatrikDropTable 'graph_attribute'
  36. GO
  37. IF EXISTS(SELECT * FROM sysobjects WHERE name='graph_color') EXEC PatrikDropTable 'graph_color'
  38. GO
  39. IF EXISTS(SELECT * FROM sysobjects WHERE name='layout') EXEC PatrikDropTable 'layout'
  40. GO
  41. IF EXISTS(SELECT * FROM sysobjects WHERE name='attribute') EXEC PatrikDropTable 'attribute'
  42. GO
  43. DROP PROCEDURE PatrikDropTable
  44. PRINT 'Transfering tables ...'
  45. PRINT 'Creating table orderby'
  46. GO
  47. IF (SELECT COUNT(*) FROM sysobjects WHERE name='_orderby')>0
  48.    DROP TABLE _orderby
  49. GO
  50. CREATE TABLE orderby
  51. (
  52.    report_id int NOT NULL,
  53.    orderby_id int NOT NULL,
  54.    attribute_id int NULL,
  55.    b_desc bit NOT NULL,
  56.    PRIMARY KEY NONCLUSTERED (report_id, orderby_id)
  57. )
  58. PRINT 'Creating table graph'
  59. GO
  60. IF (SELECT COUNT(*) FROM sysobjects WHERE name='_graph')>0
  61.    DROP TABLE _graph
  62. GO
  63. CREATE TABLE graph
  64. (
  65.    report_id int NOT NULL,
  66.    graph_id int NOT NULL,
  67.    name varchar(255) NULL,
  68.    graphtype int NULL,
  69.    c_surx int NULL,
  70.    c_sury int NULL,
  71.    c_surz int NULL,
  72.    c_bk int NULL,
  73.    c_graph int NULL,
  74.    c_palettestart int NULL,
  75.    c_paletteend int NULL,
  76.    c_text int NULL,
  77.    c_podlozka int NULL,
  78.    lwidth int NULL,
  79.    bold_r int NULL,
  80.    dec_dig int NULL,
  81.    pier float NULL,
  82.    transparent float NULL,
  83.    light_intensity float NULL,
  84.    flags int NULL,
  85.    rot_a float NULL,
  86.    rot_b float NULL,
  87.    rot_c float NULL,
  88.    nscolid int NULL,
  89.    c_wall1 int NULL,
  90.    c_wall2 int NULL,
  91.    c_wall3 int NULL,
  92.    bar3d_type int NULL,
  93.    col int NULL,
  94.    lfHeight int NULL,
  95.    lfFlags int NULL,
  96.    lfPitchAndFamily tinyint NULL,
  97.    lfFaceName varchar(32) NULL,
  98.    reserved float NULL,
  99.    glHeight int NULL,
  100.    glFlags int NULL,
  101.    glPitchAndFamily int NULL,
  102.    glFaceName varchar(32) NULL,
  103.    PRIMARY KEY NONCLUSTERED (report_id, graph_id)
  104. )
  105. PRINT 'Creating table keys'
  106. GO
  107. IF (SELECT COUNT(*) FROM sysobjects WHERE name='_keys')>0
  108.    DROP TABLE _keys
  109. GO
  110. CREATE TABLE keys
  111. (
  112.    object_id int NOT NULL,
  113.    object_depid int NOT NULL,
  114.    key_id int NOT NULL,
  115.    flags int NOT NULL,
  116.    key1 int NULL,
  117.    key2 int NULL,
  118.    key3 int NULL,
  119.    key4 int NULL,
  120.    key5 int NULL,
  121.    key6 int NULL,
  122.    key7 int NULL,
  123.    key8 int NULL,
  124.    depkey1 int NULL,
  125.    depkey2 int NULL,
  126.    depkey3 int NULL,
  127.    depkey4 int NULL,
  128.    depkey5 int NULL,
  129.    depkey6 int NULL,
  130.    depkey7 int NULL,
  131.    depkey8 int NULL,
  132.    PRIMARY KEY NONCLUSTERED (object_id, object_depid, key_id)
  133. )
  134. PRINT 'Creating table report'
  135. GO
  136. IF (SELECT COUNT(*) FROM sysobjects WHERE name='_report')>0
  137.    DROP TABLE _report
  138. GO
  139. CREATE TABLE report
  140. (
  141.    report_id int NOT NULL,
  142.    db varchar(30) NOT NULL,
  143.    name varchar(30) NULL,
  144.    description varchar(255) NULL,
  145.    flags int NOT NULL DEFAULT (0),
  146.    sample_lines int NOT NULL DEFAULT (10),
  147.    rel_flags int NOT NULL,
  148.    rel_x int NOT NULL,
  149.    rel_y int NOT NULL,
  150.    last_changed varchar(32) NULL,
  151.    s_select text NULL,
  152.    rel_scale int NULL,
  153.    s_where text NULL,
  154.    PRIMARY KEY CLUSTERED (report_id),
  155.    UNIQUE NONCLUSTERED (db, name)
  156. )
  157. PRINT 'Creating table object'
  158. GO
  159. IF (SELECT COUNT(*) FROM sysobjects WHERE name='_object')>0
  160.    DROP TABLE _object
  161. GO
  162. CREATE TABLE object
  163. (
  164.    object_id int NOT NULL,
  165.    report_id int NOT NULL,
  166.    type int NOT NULL,
  167.    table_name varchar(255) NOT NULL,
  168.    alias_name varchar(30) NULL,
  169.    flags int NOT NULL,
  170.    vx int NOT NULL,
  171.    vy int NOT NULL,
  172.    cx int NOT NULL,
  173.    cy int NOT NULL,
  174.    index_used varchar(32) NULL,
  175.    set_name varchar(30) NULL,
  176.    PRIMARY KEY NONCLUSTERED (object_id)
  177. )
  178. PRINT 'Creating table param'
  179. GO
  180. IF (SELECT COUNT(*) FROM sysobjects WHERE name='_param')>0
  181.    DROP TABLE _param
  182. GO
  183. CREATE TABLE param
  184. (
  185.    report_id int NOT NULL,
  186.    set_name varchar(30) NOT NULL,
  187.    name varchar(30) NOT NULL,
  188.    value varchar(30) NOT NULL
  189. )
  190. PRINT 'Creating table graph_pos'
  191. GO
  192. IF (SELECT COUNT(*) FROM sysobjects WHERE name='_graph_pos')>0
  193.    DROP TABLE _graph_pos
  194. GO
  195. CREATE TABLE graph_pos
  196. (
  197.    report_id int NULL,
  198.    graph_id int NULL,
  199.    ord int NULL,
  200.    x int NULL,
  201.    y int NULL
  202. )
  203. PRINT 'Creating table graph_attribute'
  204. GO
  205. IF (SELECT COUNT(*) FROM sysobjects WHERE name='_graph_attribute')>0
  206.    DROP TABLE _graph_attribute
  207. GO
  208. CREATE TABLE graph_attribute
  209. (
  210.    report_id int NOT NULL,
  211.    graph_id int NOT NULL,
  212.    colid int NOT NULL,
  213.    ord int NOT NULL
  214. )
  215. PRINT 'Creating table graph_color'
  216. GO
  217. IF (SELECT COUNT(*) FROM sysobjects WHERE name='_graph_color')>0
  218.    DROP TABLE _graph_color
  219. GO
  220. CREATE TABLE graph_color
  221. (
  222.    report_id int NOT NULL,
  223.    graph_id int NOT NULL,
  224.    ord int NOT NULL,
  225.    color int NOT NULL,
  226.    PRIMARY KEY NONCLUSTERED (report_id, graph_id, ord)
  227. )
  228. PRINT 'Creating table layout'
  229. GO
  230. IF (SELECT COUNT(*) FROM sysobjects WHERE name='_layout')>0
  231.    DROP TABLE _layout
  232. GO
  233. CREATE TABLE layout
  234. (
  235.    report_id int NOT NULL,
  236.    flags int NULL,
  237.    m_head int NULL,
  238.    m_top int NULL,
  239.    m_bottom int NULL,
  240.    m_foot int NULL,
  241.    m_left int NULL,
  242.    m_right int NULL,
  243.    t_head text NULL,
  244.    t_foot text NULL,
  245.    hHeight int NULL,
  246.    hFlags int NULL,
  247.    hPitchAndFamily tinyint NULL,
  248.    hFaceName varchar(32) NULL,
  249.    rHeight int NULL,
  250.    rFlags int NULL,
  251.    rPitchAndFamily tinyint NULL,
  252.    rFaceName varchar(32) NULL,
  253.    h0Height int NULL,
  254.    h0Flags int NULL,
  255.    h0PitchAndFamily tinyint NULL,
  256.    h0FaceName varchar(32) NULL,
  257.    h1Height int NULL,
  258.    h1Flags int NULL,
  259.    h1PitchAndFamily tinyint NULL,
  260.    h1FaceName varchar(32) NULL,
  261.    h2Height int NULL,
  262.    h2Flags int NULL,
  263.    h2PitchAndFamily tinyint NULL,
  264.    h2FaceName varchar(32) NULL,
  265.    f0Height int NULL,
  266.    f0Flags int NULL,
  267.    f0PitchAndFamily tinyint NULL,
  268.    f0FaceName varchar(32) NULL,
  269.    f1Height int NULL,
  270.    f1Flags int NULL,
  271.    f1PitchAndFamily tinyint NULL,
  272.    f1FaceName varchar(32) NULL,
  273.    f2Height int NULL,
  274.    f2Flags int NULL,
  275.    f2PitchAndFamily tinyint NULL,
  276.    f2FaceName varchar(32) NULL,
  277.    PRIMARY KEY NONCLUSTERED (report_id)
  278. )
  279. PRINT 'Creating table attribute'
  280. GO
  281. IF (SELECT COUNT(*) FROM sysobjects WHERE name='_attribute')>0
  282.    DROP TABLE _attribute
  283. GO
  284. CREATE TABLE attribute
  285. (
  286.    report_id int NOT NULL,
  287.    attribute_id int NOT NULL,
  288.    object_id int NULL,
  289.    obj_attr_name varchar(255) NOT NULL,
  290.    name varchar(255) NULL,
  291.    is_null varchar(255) NULL,
  292.    agregate int NOT NULL,
  293.    align int NOT NULL,
  294.    flags int NOT NULL,
  295.    texcp int NOT NULL,
  296.    texcp_val int NULL,
  297.    bexcp int NOT NULL,
  298.    bexcp_val int NULL,
  299.    colid int NULL,
  300.    PRIMARY KEY NONCLUSTERED (report_id, attribute_id)
  301. )
  302. GO
  303. PRINT 'Transfering indexes ...'
  304. GO
  305. CREATE INDEX repfk ON object(report_id) WITH FILLFACTOR=100 ON 'default'
  306. GO
  307. CREATE INDEX ref1 ON param(report_id) WITH FILLFACTOR=100 ON 'default'
  308. GO
  309. CREATE INDEX ref1 ON graph_pos(report_id,graph_id) WITH FILLFACTOR=100 ON 'default'
  310. CREATE INDEX ref2 ON graph_pos(ord) WITH FILLFACTOR=100 ON 'default'
  311. GO
  312. CREATE INDEX attr_ref ON graph_attribute(colid) WITH FILLFACTOR=100 ON 'default'
  313. CREATE INDEX graph_ref ON graph_attribute(graph_id) WITH FILLFACTOR=100 ON 'default'
  314. CREATE INDEX report_ref ON graph_attribute(report_id) WITH FILLFACTOR=100 ON 'default'
  315. GO
  316. CREATE INDEX graph_ref ON graph_color(graph_id) WITH FILLFACTOR=100 ON 'default'
  317. CREATE INDEX report_ref ON graph_color(report_id) WITH FILLFACTOR=100 ON 'default'
  318. GO
  319. CREATE INDEX objfk ON attribute(object_id) WITH FILLFACTOR=100 ON 'default'
  320. CREATE INDEX repfk ON attribute(report_id) WITH FILLFACTOR=100 ON 'default'
  321. GO
  322. PRINT 'Transfering triggers ...'
  323. GO
  324. PRINT 'Trans. graph_attribute_ITrig'
  325. GO
  326. CREATE TRIGGER graph_attribute_ITrig ON graph_attribute FOR INSERT
  327. AS
  328. /*PatrikB*/
  329. DECLARE @rc int
  330. SELECT @rc=@@rowcount
  331. IF @rc!=(SELECT DISTINCT COUNT(*) FROM graph r, inserted i WHERE i.report_id=r.report_id AND i.graph_id=r.graph_id)
  332. BEGIN
  333.   ROLLBACK TRANSACTION
  334.   RAISERROR 44447 'Vlo₧enie do tabu╛ky ''graph_attribute'' poruÜuje RI s ''graph'' '
  335.   RETURN
  336. END
  337. /*PatrikE*/
  338. GO
  339. PRINT 'Trans. graph_attribute_UTrig'
  340. GO
  341. CREATE TRIGGER graph_attribute_UTrig ON graph_attribute FOR UPDATE
  342. AS
  343. /*PatrikB*/
  344. DECLARE @rc int
  345. SELECT @rc=@@rowcount
  346. IF UPDATE(report_id) OR UPDATE(graph_id)
  347. IF @rc!=(SELECT DISTINCT COUNT(*) FROM graph r, inserted i WHERE i.report_id=r.report_id AND i.graph_id=r.graph_id)
  348. BEGIN
  349.   ROLLBACK TRANSACTION
  350.   RAISERROR 44446 'Zmeny v detskej tabu╛ke ''graph_attribute'' poruÜuj· RI s ''graph'' '
  351.   RETURN
  352. END
  353. /*PatrikE*/
  354. GO
  355. PRINT 'Trans. graph_color_ITrig'
  356. GO
  357. CREATE TRIGGER graph_color_ITrig ON graph_color FOR INSERT
  358. AS
  359. /*PatrikB*/
  360. DECLARE @rc int
  361. SELECT @rc=@@rowcount
  362. IF @rc!=(SELECT DISTINCT COUNT(*) FROM graph r, inserted i WHERE i.report_id=r.report_id AND i.graph_id=r.graph_id)
  363. BEGIN
  364.   ROLLBACK TRANSACTION
  365.   RAISERROR 44447 'Vlo₧enie do tabu╛ky ''graph_color'' poruÜuje RI s ''graph'' '
  366.   RETURN
  367. END
  368. /*PatrikE*/
  369. GO
  370. PRINT 'Trans. graph_color_UTrig'
  371. GO
  372. CREATE TRIGGER graph_color_UTrig ON graph_color FOR UPDATE
  373. AS
  374. /*PatrikB*/
  375. DECLARE @rc int
  376. SELECT @rc=@@rowcount
  377. IF UPDATE(report_id) OR UPDATE(graph_id)
  378. IF @rc!=(SELECT DISTINCT COUNT(*) FROM graph r, inserted i WHERE i.report_id=r.report_id AND i.graph_id=r.graph_id)
  379. BEGIN
  380.   ROLLBACK TRANSACTION
  381.   RAISERROR 44446 'Zmeny v detskej tabu╛ke ''graph_color'' poruÜuj· RI s ''graph'' '
  382.   RETURN
  383. END
  384. /*PatrikE*/
  385. GO
  386. PRINT 'Trans. report_DTrig'
  387. GO
  388. CREATE TRIGGER report_DTrig ON report FOR DELETE
  389. AS
  390. /*PatrikB*/
  391. DELETE orderby FROM orderby, deleted WHERE deleted.report_id=orderby.report_id
  392. DELETE object FROM object, deleted WHERE deleted.report_id=object.report_id
  393. DELETE layout FROM layout, deleted WHERE deleted.report_id=layout.report_id
  394. DELETE attribute FROM attribute, deleted WHERE deleted.report_id=attribute.report_id
  395. DELETE param FROM param, deleted WHERE deleted.report_id=param.report_id
  396. /*PatrikE*/
  397. GO
  398. PRINT 'Trans. report_UTrig'
  399. GO
  400. CREATE TRIGGER report_UTrig ON report FOR UPDATE
  401. AS
  402. /*PatrikB*/
  403. DECLARE @rc int
  404. SELECT @rc=@@rowcount
  405. IF UPDATE(report_id)
  406.  IF @rc<2
  407.   UPDATE orderby SET orderby.report_id=inserted.report_id
  408.   FROM orderby, deleted, inserted
  409.   WHERE orderby.report_id=deleted.report_id
  410.  ELSE BEGIN
  411.   ROLLBACK TRANSACTION
  412.   RAISERROR 44440 'Viacriadkovß kaskßdovß zmena v ''report'' '
  413.    RETURN
  414. END
  415. IF UPDATE(report_id)
  416.  IF @rc<2
  417.   UPDATE object SET object.report_id=inserted.report_id
  418.   FROM object, deleted, inserted
  419.   WHERE object.report_id=deleted.report_id
  420.  ELSE BEGIN
  421.   ROLLBACK TRANSACTION
  422.   RAISERROR 44440 'Viacriadkovß kaskßdovß zmena v ''report'' '
  423.    RETURN
  424. END
  425. IF UPDATE(report_id)
  426.  IF @rc<2
  427.   UPDATE layout SET layout.report_id=inserted.report_id
  428.   FROM layout, deleted, inserted
  429.   WHERE layout.report_id=deleted.report_id
  430.  ELSE BEGIN
  431.   ROLLBACK TRANSACTION
  432.   RAISERROR 44440 'Viacriadkovß kaskßdovß zmena v ''report'' '
  433.    RETURN
  434. END
  435. IF UPDATE(report_id)
  436.  IF @rc<2
  437.   UPDATE attribute SET attribute.report_id=inserted.report_id
  438.   FROM attribute, deleted, inserted
  439.   WHERE attribute.report_id=deleted.report_id
  440.  ELSE BEGIN
  441.   ROLLBACK TRANSACTION
  442.   RAISERROR 44440 'Viacriadkovß kaskßdovß zmena v ''report'' '
  443.    RETURN
  444. END
  445. IF UPDATE(report_id)
  446.  IF @rc<2
  447.   UPDATE param SET param.report_id=inserted.report_id
  448.   FROM param, deleted, inserted
  449.   WHERE param.report_id=deleted.report_id
  450.  ELSE BEGIN
  451.   ROLLBACK TRANSACTION
  452.   RAISERROR 44440 'Viacriadkovß kaskßdovß zmena v ''report'' '
  453.    RETURN
  454. END
  455. /*PatrikE*/
  456. GO
  457. PRINT 'Trans. orderby_ITrig'
  458. GO
  459. CREATE TRIGGER orderby_ITrig ON orderby FOR INSERT
  460. AS
  461. /*PatrikB*/
  462. DECLARE @rc int
  463. SELECT @rc=@@rowcount
  464. IF @rc!=(SELECT DISTINCT COUNT(*) FROM report r, inserted i WHERE i.report_id=r.report_id)
  465. BEGIN
  466.   ROLLBACK TRANSACTION
  467.   RAISERROR 44447 'Vlo₧enie do tabu╛ky ''orderby'' poruÜuje RI s ''report'' '
  468.   RETURN
  469. END
  470. /*PatrikE*/
  471. GO
  472. PRINT 'Trans. orderby_UTrig'
  473. GO
  474. CREATE TRIGGER orderby_UTrig ON orderby FOR UPDATE
  475. AS
  476. /*PatrikB*/
  477. DECLARE @rc int
  478. SELECT @rc=@@rowcount
  479. IF UPDATE(report_id)
  480. IF @rc!=(SELECT DISTINCT COUNT(*) FROM report r, inserted i WHERE i.report_id=r.report_id)
  481. BEGIN
  482.   ROLLBACK TRANSACTION
  483.   RAISERROR 44446 'Zmeny v detskej tabu╛ke ''orderby'' poruÜuj· RI s ''report'' '
  484.   RETURN
  485. END
  486. /*PatrikE*/
  487. GO
  488. PRINT 'Trans. graph_DTrig'
  489. GO
  490. CREATE TRIGGER graph_DTrig ON graph FOR DELETE
  491. AS
  492. /*PatrikB*/
  493. DELETE graph_attribute FROM graph_attribute, deleted WHERE deleted.report_id=graph_attribute.report_id AND deleted.graph_id=graph_attribute.graph_id
  494. DELETE graph_color FROM graph_color, deleted WHERE deleted.report_id=graph_color.report_id AND deleted.graph_id=graph_color.graph_id
  495. /*PatrikE*/
  496. GO
  497. PRINT 'Trans. graph_UTrig'
  498. GO
  499. CREATE TRIGGER graph_UTrig ON graph FOR UPDATE
  500. AS
  501. /*PatrikB*/
  502. DECLARE @rc int
  503. SELECT @rc=@@rowcount
  504. IF UPDATE(report_id) OR UPDATE(graph_id)
  505.  IF @rc<2
  506.   UPDATE graph_attribute SET graph_attribute.report_id=inserted.report_id, graph_attribute.graph_id=inserted.graph_id
  507.   FROM graph_attribute, deleted, inserted
  508.   WHERE graph_attribute.report_id=deleted.report_id AND graph_attribute.graph_id=deleted.graph_id
  509.  ELSE BEGIN
  510.   ROLLBACK TRANSACTION
  511.   RAISERROR 44440 'Viacriadkovß kaskßdovß zmena v ''graph'' '
  512.    RETURN
  513. END
  514. IF UPDATE(report_id) OR UPDATE(graph_id)
  515.  IF @rc<2
  516.   UPDATE graph_color SET graph_color.report_id=inserted.report_id, graph_color.graph_id=inserted.graph_id
  517.   FROM graph_color, deleted, inserted
  518.   WHERE graph_color.report_id=deleted.report_id AND graph_color.graph_id=deleted.graph_id
  519.  ELSE BEGIN
  520.   ROLLBACK TRANSACTION
  521.   RAISERROR 44440 'Viacriadkovß kaskßdovß zmena v ''graph'' '
  522.    RETURN
  523. END
  524. /*PatrikE*/
  525. GO
  526. PRINT 'Trans. keys_ITrig'
  527. GO
  528. CREATE TRIGGER keys_ITrig ON keys FOR INSERT
  529. AS
  530. /*PatrikB*/
  531. DECLARE @rc int
  532. SELECT @rc=@@rowcount
  533. IF @rc!=(SELECT DISTINCT COUNT(*) FROM object r, inserted i WHERE i.object_id=r.object_id)
  534. BEGIN
  535.   ROLLBACK TRANSACTION
  536.   RAISERROR 44447 'Vlo₧enie do tabu╛ky ''keys'' poruÜuje RI s ''object'' '
  537.   RETURN
  538. END
  539. /*PatrikE*/
  540. GO
  541. PRINT 'Trans. keys_UTrig'
  542. GO
  543. CREATE TRIGGER keys_UTrig ON keys FOR UPDATE
  544. AS
  545. /*PatrikB*/
  546. DECLARE @rc int
  547. SELECT @rc=@@rowcount
  548. IF UPDATE(object_id)
  549. IF @rc!=(SELECT DISTINCT COUNT(*) FROM object r, inserted i WHERE i.object_id=r.object_id)
  550. BEGIN
  551.   ROLLBACK TRANSACTION
  552.   RAISERROR 44446 'Zmeny v detskej tabu╛ke ''keys'' poruÜuj· RI s ''object'' '
  553.   RETURN
  554. END
  555. /*PatrikE*/
  556. GO
  557. PRINT 'Trans. object_DTrig'
  558. GO
  559. CREATE TRIGGER object_DTrig ON object FOR DELETE
  560. AS
  561. /*PatrikB*/
  562. DELETE keys FROM keys, deleted WHERE deleted.object_id=keys.object_id
  563. /*PatrikE*/
  564. GO
  565. PRINT 'Trans. object_ITrig'
  566. GO
  567. CREATE TRIGGER object_ITrig ON object FOR INSERT
  568. AS
  569. /*PatrikB*/
  570. DECLARE @rc int
  571. SELECT @rc=@@rowcount
  572. IF @rc!=(SELECT DISTINCT COUNT(*) FROM report r, inserted i WHERE i.report_id=r.report_id)
  573. BEGIN
  574.   ROLLBACK TRANSACTION
  575.   RAISERROR 44447 'Vlo₧enie do tabu╛ky ''object'' poruÜuje RI s ''report'' '
  576.   RETURN
  577. END
  578. /*PatrikE*/
  579. GO
  580. PRINT 'Trans. object_UTrig'
  581. GO
  582. CREATE TRIGGER object_UTrig ON object FOR UPDATE
  583. AS
  584. /*PatrikB*/
  585. DECLARE @rc int
  586. SELECT @rc=@@rowcount
  587. IF UPDATE(report_id)
  588. IF @rc!=(SELECT DISTINCT COUNT(*) FROM report r, inserted i WHERE i.report_id=r.report_id)
  589. BEGIN
  590.   ROLLBACK TRANSACTION
  591.   RAISERROR 44446 'Zmeny v detskej tabu╛ke ''object'' poruÜuj· RI s ''report'' '
  592.   RETURN
  593. END
  594. IF UPDATE(object_id)
  595.  IF @rc<2
  596.   UPDATE keys SET keys.object_id=inserted.object_id
  597.   FROM keys, deleted, inserted
  598.   WHERE keys.object_id=deleted.object_id
  599.  ELSE BEGIN
  600.   ROLLBACK TRANSACTION
  601.   RAISERROR 44440 'Viacriadkovß kaskßdovß zmena v ''object'' '
  602.    RETURN
  603. END
  604. /*PatrikE*/
  605. GO
  606. PRINT 'Trans. layout_ITrig'
  607. GO
  608. CREATE TRIGGER layout_ITrig ON layout FOR INSERT
  609. AS
  610. /*PatrikB*/
  611. DECLARE @rc int
  612. SELECT @rc=@@rowcount
  613. IF @rc!=(SELECT DISTINCT COUNT(*) FROM report r, inserted i WHERE i.report_id=r.report_id)
  614. BEGIN
  615.   ROLLBACK TRANSACTION
  616.   RAISERROR 44447 'Vlo₧enie do tabu╛ky ''layout'' poruÜuje RI s ''report'' '
  617.   RETURN
  618. END
  619. /*PatrikE*/
  620. GO
  621. PRINT 'Trans. layout_UTrig'
  622. GO
  623. CREATE TRIGGER layout_UTrig ON layout FOR UPDATE
  624. AS
  625. /*PatrikB*/
  626. DECLARE @rc int
  627. SELECT @rc=@@rowcount
  628. IF UPDATE(report_id)
  629. IF @rc!=(SELECT DISTINCT COUNT(*) FROM report r, inserted i WHERE i.report_id=r.report_id)
  630. BEGIN
  631.   ROLLBACK TRANSACTION
  632.   RAISERROR 44446 'Zmeny v detskej tabu╛ke ''layout'' poruÜuj· RI s ''report'' '
  633.   RETURN
  634. END
  635. /*PatrikE*/
  636. GO
  637. PRINT 'Trans. attribute_ITrig'
  638. GO
  639. CREATE TRIGGER attribute_ITrig ON attribute FOR INSERT
  640. AS
  641. /*PatrikB*/
  642. DECLARE @rc int
  643. SELECT @rc=@@rowcount
  644. IF @rc!=(SELECT DISTINCT COUNT(*) FROM report r, inserted i WHERE i.report_id=r.report_id)
  645. BEGIN
  646.   ROLLBACK TRANSACTION
  647.   RAISERROR 44447 'Vlo₧enie do tabu╛ky ''attribute'' poruÜuje RI s ''report'' '
  648.   RETURN
  649. END
  650. /*PatrikE*/
  651. GO
  652. PRINT 'Trans. attribute_UTrig'
  653. GO
  654. CREATE TRIGGER attribute_UTrig ON attribute FOR UPDATE
  655. AS
  656. /*PatrikB*/
  657. DECLARE @rc int
  658. SELECT @rc=@@rowcount
  659. IF UPDATE(report_id)
  660. IF @rc!=(SELECT DISTINCT COUNT(*) FROM report r, inserted i WHERE i.report_id=r.report_id)
  661. BEGIN
  662.   ROLLBACK TRANSACTION
  663.   RAISERROR 44446 'Zmeny v detskej tabu╛ke ''attribute'' poruÜuj· RI s ''report'' '
  664.   RETURN
  665. END
  666. /*PatrikE*/
  667. GO
  668. PRINT 'Trans. param_ITrig'
  669. GO
  670. CREATE TRIGGER param_ITrig ON param FOR INSERT
  671. AS
  672. /*PatrikB*/
  673. DECLARE @rc int
  674. SELECT @rc=@@rowcount
  675. IF @rc!=(SELECT DISTINCT COUNT(*) FROM report r, inserted i WHERE i.report_id=r.report_id)
  676. BEGIN
  677.   ROLLBACK TRANSACTION
  678.   RAISERROR 44447 'Vlo₧enie do tabu╛ky ''param'' poruÜuje RI s ''report'' '
  679.   RETURN
  680. END
  681. /*PatrikE*/
  682. GO
  683. PRINT 'Trans. param_UTrig'
  684. GO
  685. CREATE TRIGGER param_UTrig ON param FOR UPDATE
  686. AS
  687. /*PatrikB*/
  688. DECLARE @rc int
  689. SELECT @rc=@@rowcount
  690. IF UPDATE(report_id)
  691. IF @rc!=(SELECT DISTINCT COUNT(*) FROM report r, inserted i WHERE i.report_id=r.report_id)
  692. BEGIN
  693.   ROLLBACK TRANSACTION
  694.   RAISERROR 44446 'Zmeny v detskej tabu╛ke ''param'' poruÜuj· RI s ''report'' '
  695.   RETURN
  696. END
  697. /*PatrikE*/
  698. GO
  699. PRINT 'Trans. graph_pos_ITrig'
  700. GO
  701. CREATE TRIGGER graph_pos_ITrig ON graph_pos FOR INSERT
  702. AS
  703. /*PatrikB*/
  704. DECLARE @rc int
  705. SELECT @rc=@@rowcount
  706. IF @rc!=(SELECT DISTINCT COUNT(*) FROM graph r, inserted i WHERE i.report_id=r.report_id AND i.graph_id=r.graph_id)
  707. BEGIN
  708.   ROLLBACK TRANSACTION
  709.   RAISERROR 44447 'Vlo₧enie do tabu╛ky ''graph_pos'' poruÜuje RI s ''graph'' '
  710.   RETURN
  711. END
  712. /*PatrikE*/
  713. GO
  714. PRINT 'Trans. graph_pos_UTrig'
  715. GO
  716. CREATE TRIGGER graph_pos_UTrig ON graph_pos FOR UPDATE
  717. AS
  718. /*PatrikB*/
  719. DECLARE @rc int
  720. SELECT @rc=@@rowcount
  721. IF UPDATE(report_id) OR UPDATE(graph_id)
  722. IF @rc!=(SELECT DISTINCT COUNT(*) FROM graph r, inserted i WHERE i.report_id=r.report_id AND i.graph_id=r.graph_id)
  723. BEGIN
  724.   ROLLBACK TRANSACTION
  725.   RAISERROR 44446 'Zmeny v detskej tabu╛ke ''graph_pos'' poruÜuj· RI s ''graph'' '
  726.   RETURN
  727. END
  728. /*PatrikE*/
  729. GO
  730. PRINT 'Transfering keys ...'
  731.  
  732. GO
  733. sp_primarykey orderby, report_id, orderby_id
  734. DELETE patrik..rel WHERE db='$Sinda' AND tbl='orderby'
  735. INSERT patrik..rel VALUES('$Sinda', 'orderby', 288, 276, 112, 84)
  736. DELETE patrik..patriklog WHERE db='$Sinda' AND tbl='orderby'
  737. GO
  738. sp_primarykey graph, report_id, graph_id
  739. DELETE patrik..rel WHERE db='$Sinda' AND tbl='graph'
  740. INSERT patrik..rel VALUES('$Sinda', 'graph', 726, 32, 112, 548)
  741. DELETE patrik..patriklog WHERE db='$Sinda' AND tbl='graph'
  742. GO
  743. sp_primarykey keys, object_id, object_depid, key_id
  744. DELETE patrik..rel WHERE db='$Sinda' AND tbl='keys'
  745. INSERT patrik..rel VALUES('$Sinda', 'keys', 72, 257, 112, 340)
  746. DELETE patrik..patriklog WHERE db='$Sinda' AND tbl='keys'
  747. GO
  748. sp_primarykey report, report_id
  749. DELETE patrik..rel WHERE db='$Sinda' AND tbl='report'
  750. INSERT patrik..rel VALUES('$Sinda', 'report', 490, 40, 112, 196)
  751. DELETE patrik..patriklog WHERE db='$Sinda' AND tbl='report'
  752. GO
  753. sp_primarykey object, object_id
  754. DELETE patrik..rel WHERE db='$Sinda' AND tbl='object'
  755. INSERT patrik..rel VALUES('$Sinda', 'object', 75, 54, 112, 196)
  756. DELETE patrik..patriklog WHERE db='$Sinda' AND tbl='object'
  757. GO
  758. sp_primarykey param, report_id, set_name
  759. DELETE patrik..rel WHERE db='$Sinda' AND tbl='param'
  760. INSERT patrik..rel VALUES('$Sinda', 'param', 420, 25, 0, 0)
  761. DELETE patrik..patriklog WHERE db='$Sinda' AND tbl='param'
  762. DELETE patrik..rel WHERE db='$Sinda' AND tbl='graph_pos'
  763. INSERT patrik..rel VALUES('$Sinda', 'graph_pos', 30, 545, 0, 0)
  764. DELETE patrik..patriklog WHERE db='$Sinda' AND tbl='graph_pos'
  765. DELETE patrik..rel WHERE db='$Sinda' AND tbl='graph_attribute'
  766. INSERT patrik..rel VALUES('$Sinda', 'graph_attribute', 976, 110, 112, 84)
  767. DELETE patrik..patriklog WHERE db='$Sinda' AND tbl='graph_attribute'
  768. GO
  769. sp_primarykey graph_color, report_id, graph_id, ord
  770. DELETE patrik..rel WHERE db='$Sinda' AND tbl='graph_color'
  771. INSERT patrik..rel VALUES('$Sinda', 'graph_color', 991, 20, 112, 84)
  772. DELETE patrik..patriklog WHERE db='$Sinda' AND tbl='graph_color'
  773. GO
  774. sp_primarykey layout, report_id
  775. DELETE patrik..rel WHERE db='$Sinda' AND tbl='layout'
  776. INSERT patrik..rel VALUES('$Sinda', 'layout', 480, 243, 119, 692)
  777. DELETE patrik..patriklog WHERE db='$Sinda' AND tbl='layout'
  778. GO
  779. sp_primarykey attribute, report_id, attribute_id
  780. DELETE patrik..rel WHERE db='$Sinda' AND tbl='attribute'
  781. INSERT patrik..rel VALUES('$Sinda', 'attribute', 264, 12, 112, 244)
  782. DELETE patrik..patriklog WHERE db='$Sinda' AND tbl='attribute'
  783. GO
  784. sp_foreignkey orderby, report, report_id
  785. DELETE patrik..keysadd WHERE db='$Sinda' AND id='orderby' AND depid='report'
  786. INSERT patrik..keysadd VALUES('$Sinda', 'orderby', 'report', 30, '#')
  787. GO
  788. sp_foreignkey orderby, attribute, report_id, attribute_id
  789. DELETE patrik..keysadd WHERE db='$Sinda' AND id='orderby' AND depid='attribute'
  790. INSERT patrik..keysadd VALUES('$Sinda', 'orderby', 'attribute', 0, '#')
  791. GO
  792. sp_foreignkey graph, report, report_id
  793. DELETE patrik..keysadd WHERE db='$Sinda' AND id='graph' AND depid='report'
  794. INSERT patrik..keysadd VALUES('$Sinda', 'graph', 'report', 0, '#')
  795. GO
  796. sp_foreignkey keys, object, object_id
  797. DELETE patrik..keysadd WHERE db='$Sinda' AND id='keys' AND depid='object'
  798. INSERT patrik..keysadd VALUES('$Sinda', 'keys', 'object', 30, '#')
  799. GO
  800. sp_foreignkey object, report, report_id
  801. DELETE patrik..keysadd WHERE db='$Sinda' AND id='object' AND depid='report'
  802. INSERT patrik..keysadd VALUES('$Sinda', 'object', 'report', 30, '#')
  803. GO
  804. sp_foreignkey param, report, report_id
  805. DELETE patrik..keysadd WHERE db='$Sinda' AND id='param' AND depid='report'
  806. INSERT patrik..keysadd VALUES('$Sinda', 'param', 'report', 0, '')
  807. GO
  808. sp_foreignkey graph_pos, graph, report_id, graph_id
  809. DELETE patrik..keysadd WHERE db='$Sinda' AND id='graph_pos' AND depid='graph'
  810. INSERT patrik..keysadd VALUES('$Sinda', 'graph_pos', 'graph', 0, '')
  811. GO
  812. sp_foreignkey graph_attribute, graph, report_id, graph_id
  813. DELETE patrik..keysadd WHERE db='$Sinda' AND id='graph_attribute' AND depid='graph'
  814. INSERT patrik..keysadd VALUES('$Sinda', 'graph_attribute', 'graph', 30, 'ffff#rrr')
  815. GO
  816. sp_foreignkey graph_color, graph, report_id, graph_id
  817. DELETE patrik..keysadd WHERE db='$Sinda' AND id='graph_color' AND depid='graph'
  818. INSERT patrik..keysadd VALUES('$Sinda', 'graph_color', 'graph', 30, '#')
  819. GO
  820. sp_foreignkey layout, report, report_id
  821. DELETE patrik..keysadd WHERE db='$Sinda' AND id='layout' AND depid='report'
  822. INSERT patrik..keysadd VALUES('$Sinda', 'layout', 'report', 30, '#')
  823. GO
  824. sp_foreignkey attribute, report, report_id
  825. DELETE patrik..keysadd WHERE db='$Sinda' AND id='attribute' AND depid='report'
  826. INSERT patrik..keysadd VALUES('$Sinda', 'attribute', 'report', 30, '#')
  827. GO
  828. sp_foreignkey attribute, object, object_id
  829. DELETE patrik..keysadd WHERE db='$Sinda' AND id='attribute' AND depid='object'
  830. INSERT patrik..keysadd VALUES('$Sinda', 'attribute', 'object', 0, '#')
  831. GO
  832. GO
  833. DELETE patrik..notes WHERE db='$Sinda' AND tbl='orderby'
  834. GO
  835. DELETE patrik..notes WHERE db='$Sinda' AND tbl='graph'
  836. INSERT patrik..notes VALUES('$Sinda', 'graph', 'psu', '', 'Graph table')
  837. GO
  838. DELETE patrik..notes WHERE db='$Sinda' AND tbl='keys'
  839. GO
  840. DELETE patrik..notes WHERE db='$Sinda' AND tbl='report'
  841. GO
  842. DELETE patrik..notes WHERE db='$Sinda' AND tbl='object'
  843. GO
  844. DELETE patrik..notes WHERE db='$Sinda' AND tbl='param'
  845. GO
  846. DELETE patrik..notes WHERE db='$Sinda' AND tbl='graph_pos'
  847. GO
  848. DELETE patrik..notes WHERE db='$Sinda' AND tbl='graph_attribute'
  849. GO
  850. DELETE patrik..notes WHERE db='$Sinda' AND tbl='graph_color'
  851. GO
  852. DELETE patrik..notes WHERE db='$Sinda' AND tbl='layout'
  853. GO
  854. DELETE patrik..notes WHERE db='$Sinda' AND tbl='attribute'
  855. GO
  856. DELETE patrik..conspects WHERE db='$Sinda' AND tbl='attribute'
  857. INSERT patrik..conspects VALUES('$Sinda', 'attribute', 1, 'FK report')
  858. INSERT patrik..conspects VALUES('$Sinda', 'attribute', 2, 'PK')
  859. INSERT patrik..conspects VALUES('$Sinda', 'attribute', 3, 'parent object, may be NULL')
  860. INSERT patrik..conspects VALUES('$Sinda', 'attribute', 4, 'FK name of object''s attribute, if object_id is null then custom field')
  861. INSERT patrik..conspects VALUES('$Sinda', 'attribute', 5, 'PK name of atribute')
  862. INSERT patrik..conspects VALUES('$Sinda', 'attribute', 7, 'agregate function used')
  863. INSERT patrik..conspects VALUES('$Sinda', 'attribute', 10, 'top exception')
  864. INSERT patrik..conspects VALUES('$Sinda', 'attribute', 11, 'top exception value')
  865. INSERT patrik..conspects VALUES('$Sinda', 'attribute', 12, 'bottom exception')
  866. INSERT patrik..conspects VALUES('$Sinda', 'attribute', 13, 'bottom exception value')
  867. INSERT patrik..conspects VALUES('$Sinda', 'attribute', 14, 'col->id; join to graph_attribute')
  868. DELETE patrik..conspects WHERE db='$Sinda' AND tbl='graph'
  869. INSERT patrik..conspects VALUES('$Sinda', 'graph', 3, 'graph name')
  870. INSERT patrik..conspects VALUES('$Sinda', 'graph', 4, 'type of graph')
  871. INSERT patrik..conspects VALUES('$Sinda', 'graph', 5, 'surxcolor')
  872. INSERT patrik..conspects VALUES('$Sinda', 'graph', 6, 'surycolor')
  873. INSERT patrik..conspects VALUES('$Sinda', 'graph', 7, 'surzcolor')
  874. INSERT patrik..conspects VALUES('$Sinda', 'graph', 8, 'bk_color')
  875. INSERT patrik..conspects VALUES('$Sinda', 'graph', 9, 'graphcolor')
  876. INSERT patrik..conspects VALUES('$Sinda', 'graph', 10, 'palettestart')
  877. INSERT patrik..conspects VALUES('$Sinda', 'graph', 11, 'paletteend')
  878. GO
  879. INSERT patrik..conspects VALUES('$Sinda', 'graph', 12, 'textcolor')
  880. INSERT patrik..conspects VALUES('$Sinda', 'graph', 13, 'podlozkacolor')
  881. INSERT patrik..conspects VALUES('$Sinda', 'graph', 14, 'lwidth')
  882. INSERT patrik..conspects VALUES('$Sinda', 'graph', 21, 'rot.a')
  883. INSERT patrik..conspects VALUES('$Sinda', 'graph', 22, 'rot.b')
  884. INSERT patrik..conspects VALUES('$Sinda', 'graph', 23, 'rot.c')
  885. INSERT patrik..conspects VALUES('$Sinda', 'graph', 24, 'number of string graph attributes')
  886. INSERT patrik..conspects VALUES('$Sinda', 'graph', 25, 'stena1')
  887. INSERT patrik..conspects VALUES('$Sinda', 'graph', 26, 'stena2')
  888. INSERT patrik..conspects VALUES('$Sinda', 'graph', 27, 'stena3')
  889. INSERT patrik..conspects VALUES('$Sinda', 'graph', 29, 'stlpec')
  890. INSERT patrik..conspects VALUES('$Sinda', 'graph', 31, 'und, ital, bold, strikeout')
  891. DELETE patrik..conspects WHERE db='$Sinda' AND tbl='graph_color'
  892. INSERT patrik..conspects VALUES('$Sinda', 'graph_color', 1, 'fk')
  893. INSERT patrik..conspects VALUES('$Sinda', 'graph_color', 2, 'fk')
  894. INSERT patrik..conspects VALUES('$Sinda', 'graph_color', 3, 'order of color')
  895. INSERT patrik..conspects VALUES('$Sinda', 'graph_color', 4, 'color value (RGB)')
  896. DELETE patrik..conspects WHERE db='$Sinda' AND tbl='keys'
  897. INSERT patrik..conspects VALUES('$Sinda', 'keys', 1, 'FK Object')
  898. INSERT patrik..conspects VALUES('$Sinda', 'keys', 2, 'FK Object')
  899. INSERT patrik..conspects VALUES('$Sinda', 'keys', 3, 'contraint id')
  900. INSERT patrik..conspects VALUES('$Sinda', 'keys', 4, 'join type, virtual relation')
  901. GO
  902. INSERT patrik..conspects VALUES('$Sinda', 'keys', 5, 'one based indexes to object columns')
  903. DELETE patrik..conspects WHERE db='$Sinda' AND tbl='layout'
  904. INSERT patrik..conspects VALUES('$Sinda', 'layout', 1, 'parent report')
  905. INSERT patrik..conspects VALUES('$Sinda', 'layout', 2, 'preview flags')
  906. INSERT patrik..conspects VALUES('$Sinda', 'layout', 3, 'margins')
  907. INSERT patrik..conspects VALUES('$Sinda', 'layout', 9, 'header text')
  908. DELETE patrik..conspects WHERE db='$Sinda' AND tbl='object'
  909. INSERT patrik..conspects VALUES('$Sinda', 'object', 3, '1=TABLE, 2=VIEW, 3=REPORT')
  910. INSERT patrik..conspects VALUES('$Sinda', 'object', 4, 'name of table, view or report')
  911. INSERT patrik..conspects VALUES('$Sinda', 'object', 11, 'optimizer hint index')
  912. DELETE patrik..conspects WHERE db='$Sinda' AND tbl='orderby'
  913. INSERT patrik..conspects VALUES('$Sinda', 'orderby', 1, 'FK report')
  914. INSERT patrik..conspects VALUES('$Sinda', 'orderby', 2, 'order')
  915. INSERT patrik..conspects VALUES('$Sinda', 'orderby', 3, 'FK')
  916. INSERT patrik..conspects VALUES('$Sinda', 'orderby', 4, 'descent?')
  917. DELETE patrik..conspects WHERE db='$Sinda' AND tbl='report'
  918. INSERT patrik..conspects VALUES('$Sinda', 'report', 6, 'number of lines in report sample data')
  919. INSERT patrik..conspects VALUES('$Sinda', 'report', 7, 'relational model flags')
  920. INSERT patrik..conspects VALUES('$Sinda', 'report', 8, 'position of view viewed in RM')
  921. INSERT patrik..conspects VALUES('$Sinda', 'report', 10, 'NT username who have last changed report')
  922. INSERT patrik..conspects VALUES('$Sinda', 'report', 11, 'column name free select')
  923. GO
  924. use patrik
  925. GO
  926. CREATE TABLE md_def (db varchar(30) NOT NULL, feature varchar(255) NOT NULL, width int NULL, ord int NOT NULL, PRIMARY KEY (db, ord)) 
  927. CREATE INDEX ref1 ON md_def(db) 
  928.  
  929. CREATE TABLE md_data (db varchar(30) NOT NULL, tbl varchar(30) NOT NULL, colid int NOT NULL, data text NOT NULL, PRIMARY KEY (db, tbl, colid)) 
  930. CREATE INDEX ref1 ON md_data(db) 
  931. CREATE INDEX ref2 ON md_data(db, tbl) 
  932.  
  933. CREATE TABLE ptree (db varchar(30) NOT NULL, parent varchar(30) NOT NULL, child varchar(30) NULL, ch_type int NOT NULL) -- obj, subdir, dirinf 
  934. CREATE INDEX ref1 ON ptree(db, parent) 
  935. CREATE INDEX ref2 ON ptree(db, child, ch_type) 
  936.  
  937. CREATE TABLE tabexpand (usr varchar(30) NOT NULL, db varchar(30) NOT NULL, tbl varchar(30) NOT NULL, op int NOT NULL, colid int NULL, arg varchar(255) NULL) 
  938. CREATE INDEX ref1 ON tabexpand (db, tbl) 
  939. CREATE INDEX ref2 ON tabexpand (usr, db, tbl)