to ensure the integrity of data in multiple tables materialized

Hello



I have a problem and I am not able to solve. Partly, it's because of my poor knowledge of SQL. I have three tables and I use a sequence to enter data into them.

I am attached to is to create a materialized view (full or quick, depending on) with discount to the validate option to verify that each table contains unique data to each other.



I write code so you can get there:


CREATE TABLE table_1 (
ID NUMBER PRIMARY KEY

);



CREATE TABLE table_2 (
ID NUMBER PRIMARY KEY

);



CREATE TABLE table_3 (
ID NUMBER PRIMARY KEY

);



INSERT INTO table_1 VALUES (1);

INSERT INTO table_1 VALUES (2);

INSERT INTO table_2 VALUES (3);

INSERT INTO table_2 VALUES (4);

INSERT INTO table_3 VALUES (5);

INSERT INTO table_3 VALUES (6);
I want to write create a materialized view that will give me the output only in the case that it has same values in two different tables. I had to date.


 


CREATE MATERIALIZED view mv_test 
REFRESH COMPLETE ON COMMIT
AS
SELECT count(1) ROW_COUNT
FROM dual 
WHERE EXISTS (
     SELECT a.id 
     FROM table_1 a
     WHERE a.id IN(
         SELECT b.id 
         FROM table_2 b)) 
OR EXISTS (
    SELECT a.id 
     FROM table_1 a
     WHERE a.id IN
             (SELECT c.id 
             FROM table_3 c))
OR EXISTS (
    SELECT b.id 
         FROM table_2 b
    WHERE b.id IN
             (SELECT c.id 
             FROM table_3 c)); 
             
    ALTER MATERIALIZED VIEW mv_test
    ADD CONSTRAINT cs_mv_test
    CHECK (row_count = 0) DEFERRABLE;
This sql statement itself returns no line if my logic is correct. And in case there was a few lines in two different tables, it would return 1 and constraint would throw an error.



However, I can't create this with ON COMMIT option. When I try to compile I get:


 



ORA-12054: cannot set the ON COMMIT refresh attribute for the materialized view
I went through the documentation, I tried mat_view creation logs etc.

I know that one of the mistakes is that I am referencing the double table and I don't know if I can use EXISTS.



Unfortunately, my SQL wisdom ends here. I need help to rewrite the sql code, so it would be a materialized view with Refresh on the validate option. Help, please!



I know that since I'm on a sequence there is little chance that same value will enter into two different tables, but I would like to make somekind of audit.





Thank you in advance.

>

I know that since I'm on a sequence there is little chance that same value will enter into two different tables, but I would like to make somekind of audit.

If you are certain that you control all the entries in the table and you are probably using a sequence to be inserted in the three tables then there is physically no possible in all tables, you will get duplicate values.

Write something to check if it is the case would be nearly identical to writing something to verify that 1 + 1 is really equal to 2 in 100% of cases.

If you need to, however. consider something similar to what can be better that follows:

select *
  from table_1 t1
  full outer join table_2 t2 on (t1.id = t2.id)
  full outer join table_3 t3 on (t1.id = t2.id
                                 or
                                 t2.id = t3.id)
 where t1.id+t2.id+t3.id not in (t1.id,t2.id,t3.id);

Tags: Database

Similar Questions

  • Cannot write the FFT of the integrated double data

    I am a beginner to Labview environment.
    I have acceleration Vs time dat file .lvm
    Can I get the double integration of this
    acceleration data for trip data.
    Can I get FFT of displacement and displayed on the graph.
    Up to this point VI works
    But now if I connect this FFT of moving to 'write the measurement file' then it displays error.
    Please help me... and correct the error...  All I want is two column data, frequency and

    the other of the amplitude of movement.
    I have attached all files
    I ask you to correct the VI please...
    Thanking you!

    The concepts that you'll want to research are"matrices", "indexing of tables", 'automatic indexing', 'cluster' and 'type of waveform data'.

    The loop IN the first VI I sent used the automatic indexation to take each element of a table 1 d of the clusters and perform operations on them separately to convert them to a waveform.  Exit tunnel also uses automatic indexing so that the end result is a table 1 d of waveforms.  I used the loop, so that no matter how many items appear in the table, you get a corresponding number of signals to the "writing on a file of measures."

    In this case, because the output of the FRF is a single cluster (and not an array of clusters), the loop FOR was not necessary.  The VI attached this time takes the output of cluster of FRF and maps the cluster to a single components build the wave function and you get a result of unique waveform.

    I have no sound and Vibe loaded on my computer at the moment, so I can't run your VI and see the result of the integration of the snout to the Cloaca VI.  The output data type is "Table 1 d of waveform" and your indicator and your two FRF can accept only waveforms.  I put a function between integration and the indicator/FRF array index, but if there is more than one waveform in the table, it would be the wrong solution.  My solution corrects the broken wires but throws waveforms 2,3,4... If they exist.

  • How to ensure the separation of data from different types of data for ESXi 4?

    Does anyone have a reference architecture to ensure the separation of the point of creating data in transit and storage of different types of dataexample PCI DSS data (personal credit card), data ITAR/EAR, etc.  Concern is due to the mix of data VLAN or crossed, VLAN themselves not to use as a security boundary.  VMware offers to ensure the separation at the application levelif I read it correctlywell in transit even in stockdata must be separated.  Suggestions?

    Hello VMwear8,

    The chances of anyone to play with the hypervisor itself is actually quite thin, what must be addressed is the data accessed in virtual machines. If you need protect administrators to access these data.

    Right now that is not possible to 100%, however you can restrict access by implementing different controls:

    (1) execute all access to your ESX hosts and vCenter via the HyTrust appliance, this is a preventive measure in some cases.

    (2) turn off the navigation data store in the vSphere Client (this is a RBAC vCenter)

    (3) turn off 'root' or superuser for each ESX host (except in a situation of "break the glass"). If they need access 'root' follow it via sudo.

    (4) add the audit in order to know who did what, when, where and how

    (5) protect your management tools as if they were gold. Check out this post performance and security management in the virtual environment tools as an aid to help with this.

    At most you can only put controls around the problem, we can not currently permanently prohibit access to one person give you access as being able to connect as root in the ESX host.

    Best regards

    Edward L. Haletky

    Host communities, VMware vExpert,

    Author: VMware vSphere and Virtual Infrastructure Security,VMware ESX and ESXi in the 2nd business edition

    Podcast: the Podcast for security virtualization of resources: the virtual virtualization library

  • View the integration queue data

    Hello

    I have implemented a workflow creates an integration event and configured to follow the fields suitable, but I was wondering if it is possible to view the data that are followed by the integration event?

    There is a record in "Number of Transactions in the queue" which is just a test, but I don't see how to display it, if anyone could help that would be great!

    Thank you

    There is no user interface or an Assistant to see data within the queue, the only option is to query the queue using Web Services integration

    Kind regards
    Deepak: kamal

  • Create the form for selecting data in multiple tables

    Hello

    I'm getting APEX for the first time and I just read 2 days dev Application Express guide

    I tried to play and I can't create a report with the form that select data from several tables

    What I want to achieve is a report we'll say 'USERS' makes MANAGER_ID ID, NAME, with a form that allows me to create, delete, change users

    The problem is that, once the report with the form created, if I click on create (to create a user) it will ask me for id, name, and manager_id

    I need a water drop down which allows me to select managers in the table manager instead of manually insert Director id

    How do I do that?

    Thank you!

    HI Chris,

    LOV will use this magic.

    Search:

    Kind regards

    BEnjamin

  • Select Max (date) between multiple tables

    I need to retrieve a record from a Table in a set of similar tables with a common "date field". You can select the record where this "date field" value is greater between multiple tables.

    Here, any help is appreciated.  Thank you in advance.

    FOR EXAMPLE

    No. EMP is the primary key.

    Again, each table can have multiple records for EMP n ° 1

    TABLE1:

    FIRST NAME

    FAMILY NAME
    THE EMP NO.

    BASE SALARY

    DATE_FROM

    TABLE 2

    FIRST NAME

    FAMILY NAME
    THE EMP NO.

    SALARY GRADE

    DATE_FROM

    TABLE 3

    FIRST NAME

    FAMILY NAME
    THE EMP NO.

    COMPENSATION

    DATE_FROM

    Hello

    Said Knani, if you use the current design of the table, then here is a way to do what you want:

    WITH union_data AS

    (

    SELECT MAX (base_salary) AS sal FROM table1 UNION ALL

    SELECT MAX (grade_salary) table2 UNION ALL

    SELECT MAX (compensation) FROM table3

    )

    SELECT MAX (sal) AS max_sal

    Of union_data

    ;

  • data in multiple tables and columns

    Hello

    How to find if multiple tables are containing the same data?
    Text of the 'Apple' is in three different tables and under three different column names.
    Expected result
     
    fruits_one
    fruits_two 
    fruits_three
    Select name, quantity from fruits_one;
    Apple   1
    Orange  1
    Pear    1
    
    
    select flavour, desc from fruits_two;
    Red,   Apple 
    Blue, Berry
    
    select order,date,details  from fruits_three;
    101  11/11/2011    Grapes
    102  12/01/2010    Apple
    Thank you
    Sandy
    SQL> create table fruits_one (name varchar2(100), quantity number);
    
    Table created.
    
    SQL> insert into fruits_one
      2  select 'Apple'  name, 1 quantity from dual union all
      3  select 'orange'  name, 1 quantity from dual; 
    
    2 rows created.
    
    SQL> commit;
    
    Commit complete.
    
    SQL> create table fruits_two (flavour varchar2(100), des varchar2(100));
    
    Table created.
    
    SQL> insert into fruits_two
      2  select 'Red' flavour,   'Apple' des  from dual union all
      3  select 'blue' , 'berry'  from dual ;
    
    2 rows created.
    
    SQL> commit;
    
    Commit complete.
    
    SQL> set serveroutput on
    SQL> declare
      2  l_search varchar2(10) := 'APPLE';
      3  l_cnt number := 0;
      4  begin
      5
      6  for x in (select column_name, data_type, table_name from user_tab_cols where data_type in ('VAR
    CHAR2'))
      7  loop
      8
      9    execute immediate  'select count(*) from "' || x.table_name ||'" where upper("' || x.column_n
    ame || '") like ''%' || l_search || '%''' into l_cnt;
     10
     11    if l_cnt > 0  then
     12    dbms_output.put_line('table = "' || x.table_name ||'", column = "' || x.column_name ||'"');
     13    end if;
     14
     15  end loop;
     16
     17  end;
     18  /
    table = "FRUITS_ONE", column = "NAME"
    table = "FRUITS_TWO", column = "DES"
    
    PL/SQL procedure successfully completed.
    
    SQL> 
    
  • The most recent data in a table view

    I'm adding values to a bulletin board as in the example, but I want to be the most recent data for the user to see the top line.

    He keeps adding to the bottom, and then the user will have to Diecut down see all data.      Can I select the most recent data somehow or get auto-scrolling data table are applied?     I tried registers to shift as well, but no luck.

    Here's my VI

    Thank you

    Mike

    Have you read the help of the function insert in the table? He clearly says that if you leave the unwired index entries, it will insert at the end. So, don't let the unwired index entries. Wire a '0' to the row index.

  • To create an interactive report in the apex by selecting from multiple tables

    Hi, I am creating an interactive report by selecting from multiple tables.

    SELECT w.FIRST_NAME as name, w.SURNAME as name, i.ROAD Road, i.DATE_OF_INC as DATE_OF_INC, S.STATEMENT as a STATEMENT OF Declaration

    JOIN THE

    WITNESS w

    ON w.witness_id = s.FK1_WITNESS_ID

    JOIN THE

    Incident I have

    WE

    i.incident_no = w.FK1_INCIDENT_NO

    JOIN THE

    user_station ps

    ON ps.station_id = i.nearest_station_id

    JOIN THE

    the user in.

    WE

    in. STATION_ID = ps.station_id

    WHERE po.officer_id = 1

    by I continue to encounter this error "the report query requires a unique key to identify each row. The supplied key cannot be used for this query. Please change the report attributes to define a unique key column. "ORA-01445: cannot select ROWID from where sample, a join without key preserved table view '

    So I googled around and found that in the attibutres tables report, I need to change the "LINK" COLUMN so first, I changed "Link to custom target", but the report is so I changed it to "Exclude link Clolumn" again, the report didn't report and I STILL got a blank page with only the tabs.

    I wonder you can not create a report by selecting from multiple tables?

    If you can please I need your help.

    Thank you

    You can, but in this case, it might be easier to build your report tables that are joined Oracle views and then build your report out of the newly built sight...

    Or wrap a selection around your selection with joins, and then make the where clause on the external selection...

    Thank you

    Tony Miller
    Software LuvMuffin
    Ruckersville, WILL

  • To access the details of text notes of cell (in the form of data) in relational tables

    We have a lot of cell text notes (writings of in the data forms) that users create and use, using smartview to access planning.
    Is it possible to look at without connecting smartview/similar, which is looking at a particular relational table in the background? If so, which table would hold this information?

    How to play with HSP_CELL_NOTE and CELL_NOTE_ITEM?

    See you soon... !!

  • Loading data from multiple tables in essbase using ODI

    Hello

    We have a scenario where the data comes from more than one table. I would like to know how ODI will load the data for the right combination of members

    Hello

    Consider each data table has a field that corresponds to the other table. You can simply drag the source interface data warehouses and create a join between the tables.

    See you soon

    John
    http://John-Goodwin.blogspot.com/

  • advice/assistance on the consolidation of data from multiple Macs

    Hi, I have accumulated years worth of data... text, multimedia files, documents of all kinds - everywhere

    a variety of Macs - Mobile Office, Mac mini, iMac - each running 10.6.8 systems or 10.8 +.

    My mission, after a new backup of each of these respective volumes - is to gather all the data on their part on a single external hard drive in order to see him again all for relevance - after executing a kind of double-eliminator app like Tidy Up or Gemini - and in turn, to classify everything in a logical as a whole new folders.

    Before you start what I want to know if I'm going to run into some weird permissions problems or other have difficulties to open any of the data collected on the "new master" HD - and if so, what can I do to not have this happen.  Back in the day, we could of course just do drag an entire volume of HD on another HD and find it... who was OS9 and earlier of course.

    I am concerned about the content of the data - not applications/utilities - those that are not relevant to this project - it is organize information (docs) and multimedia files.  Where also does make sense for only the copy of the files

    vs 'everything' - and if so... what would be a good way of singling out and only transfer that data on the new 'master' review by car?

    Thanks for your time and any thoughts on the best way to do this.

    Mike

    iMac, Mac OS X (10.6.8)

    For permissions, after you copy the data to the external hard drive, do a Get Info (command - I) on the drive and check for the option ignore the property. If this is not available, unlock the lock and give you read/write permissions. Then, click on the gear down and select apply to included items.

    Normally, all data are stored in your user/home folder, so if you copy the folders that are located in your user/home folder, which should get your data.

  • The most effective way to insert form data into multiple tables and w/autonum

    Hi all, this is my first post here. I am new to APEX and PL/SQL. I have ColdFusion and SQL, and I'm used to perform CRUD operations in my CF Tags application files. From what I've read so far, so if this is accurate, it seems that it is more efficient to perform most of the CRUD operations on the database side, I hope that for advice on the best way to accomplish what I ask - even if I'm trying to do is better off in my new APEX application I am open to this information as well.

    I have a form whose data must reside in two tables. Table A is a one-to-one relationship table and stores General information for each request. Table B is a table of one-to-many observations and should store unique records for each type of comment entered on the form, of which there are 3 comment fields on the form, I'd end up with 3 disks in table B for 1 in table A. I am generating an AutoNumber for table A with a sequence and relaxation. I want to do is take the AutoNumber I just created and use it for insertion in the Table B each insertion I have to do. This is where I am stuck.

    I would like to comment on 1) where I should put all these operations and 2) how best to go about what I want to do coding. In ColdFusion, it is as simple as inserting the record in Table A, immediately asking to table A more recent recording and storing (auto) ID in a variable and then using this var for any other table insertions, I had to do. I know it must be at least a little easier in the Oracle world, I just need a nudge in the right direction. Thank you!

    OraclePledge,

    You're pretty close to not having worked with oracle a lot.

    This section is backwards:

    insert into sch.tbl_main(cust_lname,cust_fname,acct_num)
    values(:P3_CUST_LNAME,:P3_CUST_FNAME,:P3_ACCT_NUM);
    
    select "SCH"."TBL_MAIN_SEQ".currval
          into
          v_ID
          from dual;
    

    Even if it will work if you only have a single user, it's a potential bug with two or more users. First select the key (if it's first use nextval rather than currval) can use it in the insert statement.

    See you soon,.
    Janet Tyson

    Published by: Tyson Janet on June 23, 2011 10:48

  • How to upgrade the table based on data in multiple tables?

    TABLE1:

    =======

    TXN_ID | NAME

    --------------------

    TX001 | null

    TX002 | null

    TX003 | null

    TX004 | null

    TX005 | null

    TX006 | null

    TX007 | null

    TX008 | null

    TX009 | null

    TABLE2

    ========

    TXN_ID

    -------

    TX002

    TX004

    TX005

    TX006

    TABLE 3

    ========

    TXN_ID

    -------

    TX001

    TX008

    TX009

    If TABLE1. TXN_ID present in TABLE2, I should update the form ABC TABLE1.NAME.

    If TABLE1. TXN_ID present in table 3, I should update TABLE1.NAME as XYZ.

    I can update this by running 2 scripts.

    UPDATE TABLE1 SET B.SID = 'ABC' WHERE

    IT EXISTS (SELECT 1 FROM TABLE2 B WHERE B.TXN_ID = A.TXN_ID);

    UPDATE TABLE1 SET B.SID = "XYZ" WHERE

    IT EXISTS (SELECT 1 FROM TABLE 3 C WHERE C.TXN_ID = A.TXN_ID);

    How can we do this in a single script? I have more than 10 tables as TABLE2 and TABLE3.

    Output should be:

    TABLE1:

    =======

    TXN_ID | NAME

    --------------------

    TX001 | XYZ

    TX002 | ABC

    TX003 | null

    TX004 | ABC

    TX005 | ABC

    TX006 | ABC

    TX007 | null

    TX008 | XYZ

    TX009 | XYZ

    Assuming a table2 and table3 will not have same tnx_id you can do.

    merge into table1 t1

    a_l'_aide_de)

    Select txn_id

    name

    de)

    Select txn_id, "TABLE2" name

    from table2

    Union of all the

    Select txn_id, name "TABLE3."

    table 3

    )

    ) t2

    on)

    T1.txn_id = t2.txn_id

    )

    When matched then

    set t1.name, t2.name = update

  • Convert a table 1 d of the Cluster (time + data) in 2D-table time and data. How?

    Hello

    is there a simple way to convert a large table 1 d of the Cluster (containing a timestamp and a given) in a table 2D with time stamp and data?

    I could index the table in a while loop, separate each item and put the timestamps and the data in a new table.

    The format of the new table could be an array of double (then the timestamp must be converted to a double) or an array of strings.

    Could I do this without a loop?

    Johannes

    LabVIEW 7.1 (!)

    Hi Johannes,

    If it is possible to manage your time as dbl-floats stamps, I suggest using a simple loop and the cluster to function array (Cluster_to_Array_Mod1.vi).

    If you want to stay with time stamp data type, even once use a loop for a cluster unbundle and build the function array (cluster_to_array_Mod2.vi).

    Kind regards

    Thomas

Maybe you are looking for

  • EncodePointer not found

    After you install a program, it shows all installed, however, an error saying: Entry not found, the procedure entry point EncodePointer is not found in the KERNEL32.dll dynamic link library. This is for windows xp. It is a program that has a library

  • Wireless router to modem Homeportal 1800 HG 2wire Linksys WRT54G with questions

    I have the Linksys WRT54G, and I'm trying to use it as the router to my modem 2wire Homeportal 1800 HG wireless.  The 2wire has four ethernet Sockets in the back marked from 1 to 4 and a telephone jack to connect to the wall for AT & T DSL service. I

  • disappeared from the sidebar

    Hello, I am using vista for the past 3 years and my sidebar disappeared a year ago. I tried to recover it, but could not. How can I get it back?

  • Media need to HELP blackBerry Smartphones!

    OK, so im going to DAY 3 of trying to get some freakin music on my curve... So here was ive done up to now: Downloaded Desktop Manager 4.6 media manager WITH and WITHOUT... and have the same problems. I (now have a NEW computer) have only 3 songs in

  • Use of the memory of blackBerry Smartphones

    I'm a little red faced.  But thanks for the instructions to the new Message.  I'm new to blackberry.  I have a lot of emails between different accounts.  This is my first experience with the receipt of e-mail to a "mobile phone".  I have checked thro