Table Creation & Primary Keys
Hi there
I have a table with the 1st 3 fields as primary keys. I now need to change this to other fields.. But these fields are in the middle of the table. Apparently the primary keys must be the first fields in the table so I have to move the fields I need up. The problem is it will influence my XI/PI development cause Im using substrings to get the correct fields and If I change the order of the fields my interfaces will not work anymore.. I there a way to set the primary keys without changing the order of the fields?
Thanks,
Jan
Hi Jan,
I think there is no other way to do it. All the primary keys should be declared in continuation at the begining of the table. Try to change your XI/PI development according to these entries.
Regards,
Swapna.
Similar Messages
-
Null value in detail table's primary key
I use Business Components Data Form to define a master-detail java panel.
I don't display the primary key column in the detail grid control.
Then I click on "+" to add a row, enter a value (the 2nd part of the detail table's primary key) and click commit.
I get an error saying that the primary key column that's not displayed is null and the row cann't be committed.
How do I fix this error?My fields are varchar2's.
-- simplified to protect the guilty:
-- (made up from memory, so sql keywords may --be misspelled, but you get the idea)
create table proj (
proj varchar2(10) not null,
constraint proj_pk
primary key(proj)
insert into proj values ('abc');
commit;
-- this table has legal values for -- the master.legal field.
-- in master, legal was changed to a -- ComboBoxControl control from -- TextFieldControl that the wizard -- generated.
create table legal_values (
proj varchar2(10) not null,
legal varchar2(10) not null,
display_order integer not null,
constraint legal_values_pk
primary key (proj, legal)
insert into legal_values
values ('abc', 'one', 1);
insert into legal_values
values ('abc', 'two', 2);
insert into legal_values
values ('abc', 'three', 3);
commit;
create table master (
proj varchar2(10) not null,
masterKey varchar2(15) not null,
legal varchar2(10) not null,
constraint master_pk
primary key (proj, masterKey)
create table detail (
proj varchar(10) not null,
masterKey varchar(15) not null,
detailkey varchar(10) not null,
display_order integer not null,
status varchar2(12) not null, -- user can only update this field
constraint detail_pk
primary key(proj, masterkey, detailkey)
-- legal rows for detail table
create table detail_values (
proj varchar2(10) not null,
detailkey varchar2(10) not null,
display_order integer not null,
constraint detail_values_pk
primary key(proj, detailkey)
insert into detail_values values
('abc', 'status a', 1);
insert into detail_values values
('abc', 'status b', 2);
commit;
-- if their is a foriegn key on details back
-- to master, then you get the
-- "mutating table" error when trigger
-- occurs.
create or replace trigger master_tr
after insert on master
for each row
begin
insert into detail
(masterKey, detailKey, status, display_order, status)
select :new.masterkey, detail_key, display_order, ' '
from detail_values;
end;
-- detail.status is a comboboxControl getting --its values of of another db table too.
-- there's also "after update" triggers on master and detail tables that copy the record to master_history and "detail_history" tables if the corresponding table is modified. Thus we have a history of the changes made to the records. The 2 history tables have 2 additional fields than their parents, "modified_date date default sysdate not null" and "modified_by varchar2(30) default user not null" that record when and who made the change. There's also a change type field that records where the change is an insert, delete or update (there 3 triggers per table , so we can correctly record change type as being insert, delete or update into the change_type field).
If you want to make it more real to life, the status value is initially blank, then can be changed to a legal status value (complete or not complete), but can not be changed back to blank.
***P.S. I have to have this ready for production by monday.****
P.P.S After you reply and change to ComboBoxControls in 2 places, try changing the table names and/or the column names (say to follow the DBA's naming convention) or add another field to the composite primary key (and unstated foriegn key) (using drop table/create table). Now try getting the existing code to run. No writing down the old/new table (or column) name pair names. Just run the code and try to fix the code based on the error messages. Are the error messages giving you adequate information to find the problem? -
How to add a new data element for existing table filed(Primary key field)
Hi Experts,
How to add a new data element for existing table field(Primary key field)
For this filed ther is no foreign key relation ships and even check table.
while activating table it is giving message like below.
can you help any one to solve this and wil steps to add new dataelement for existing primary key filed of a table.
Check table (NAMING SPACE/TABLE NAME(EX:/TC/VENDOR)) (username/19.02.10/03:29)
Primary key change not permitted for value table /TC/VENDOR
Check on table /TC/VENDOR resulted in errors
Thanks
RaviHi,
Easiest way is to download the table eg into an Excel table (if possible) or text table. Drop the table from the database. Build your table with the new key field. Build the database table again and fill it.
You can do it also over the database into a new table. Drop the old one. Build the enhanced one and fill it. Afterwards drop your (temporary) table.
Maybe there are other ways, but this works.
Success,
Rob -
Every table need primary key in toplink mapping to fetch the data
Hi everyone,
we are working on toplink mapping , it neccessary every table needs primary key. if yes, gave me example.Hi everyone,
Alterations in database will not be automatically reflected in toplink so, there is any alternative
with regards
abusufian -
Table and Primary Key Case Sensitive in Automated Row Fetch
Why are the table and primary key fields case sensitive in the Automated Row Fetch process? I'm debugging an error in this process and I'm not sure what the case should be.
Russ - It's a defect of sorts. Use upper case in the process definition. I don't think these processes will work with tables or columns whose names are not known to the database as upper-case values, i.e., defined using double-quoted non-upper case.
Scott -
Dynamic SQL Joining between tables and Primary keys being configured within master tables
Team , Thanks for your help in advance !
I'm looking out to code a dynamic SQL which should refer Master tables for table names and Primary keys and then Join for insertion into target tables .
EG:
INSERT INTO HUB.dbo.lp_order
SELECT *
FROM del.dbo.lp_order t1
where not exists ( select *
from hub.dbo.lp_order tw
where t1.order_id = t2.order_id )
SET @rows = @@ROWCOUNT
PRINT 'Table: lp_order; Inserted Records: '+ Cast(@rows AS VARCHAR)
-- Please note Databse names are going to remain the same but table names and join conditions on keys
-- should vary for each table(s) being configured in master tables
Sample of Master configuration tables with table info and PK Info :
Table Info
Table_info_ID Table_Name
1 lp_order
7 lp__transition_record
Table_PK_Info
Table_PK_Info_ID Table_info_ID PK_Column_Name
2 1 order_id
8 7 transition_record_id
There can be more than one join condition for each table
Thanks you !
Rajkumar YeluguHi Rajkumar,
It is glad to hear that you figured the question out by yourself.
There's a flaw with your while loop in your sample code, just in case you hadn't noticed that, please see below.
--In this case, it goes to infinite loop
DECLARE @T TABLE(ID INT)
INSERT INTO @T VALUES(1),(3),(2)
DECLARE @ID INT
SELECT @ID = MIN(ID) FROM @T
WHILE @ID IS NOT NULL
PRINT @ID
SELECT @ID =ID FROM @T WHERE ID > @ID
So a cursor would be the appropriate option in your case, please reference below.
DECLARE @Table_Info TABLE
Table_info_ID INT,
Table_Name VARCHAR(99)
INSERT INTO @Table_Info VALUES(1,'lp_order'),(7,'lp__transition_record');
DECLARE @Table_PK_Info TABLE
Table_PK_Info_ID INT,
Table_info_ID INT,
PK_Column_Name VARCHAR(99)
INSERT INTO @Table_PK_Info VALUES(2,1,'order_id'),(8,7,'transition_record_id'),(3,1,'order_id2')
DECLARE @SQL NVarchar(MAX),
@ID INT,
@Table_Name VARCHAR(20),
@whereCondition VARCHAR(99)
DECLARE cur_Tabel_Info CURSOR
FOR SELECT Table_info_ID,Table_Name FROM @Table_Info
OPEN cur_Tabel_Info
FETCH NEXT FROM cur_Tabel_Info
INTO @ID, @Table_Name
WHILE @@FETCH_STATUS = 0
BEGIN
SELECT @whereCondition =ISNULL(@whereCondition+' AND ','') +'t1.'+PK_Column_Name+'='+'t2.'+PK_Column_Name FROM @Table_PK_Info WHERE Table_info_ID=@ID
SET @SQL = 'INSERT INTO hub.dbo.'+@Table_Name+'
SELECT * FROM del.dbo.'+@Table_Name+' AS T1
WHERE NOT EXISTS (
SELECT *
FROM hub.dbo.'+@Table_Name+' AS T2
WHERE '+@whereCondition+')'
SELECT @SQL
--EXEC(@SQL)
SET @whereCondition = NULL
FETCH NEXT FROM cur_Tabel_Info
INTO @ID, @Table_Name
END
Supposing you had noticed and fixed the flaw, your answer sharing is always welcome.
If you have any question, feel free to let me know.
Eric Zhang
TechNet Community Support -
Insert into table returning primary key (auto number) in resultset
Hi,
I'm connecting to Oracle 10g via JDBC (ojdbc14.jar).
My SQL statement is as follows:
INSERT into Student (studentName, phone, email, address) values ('Jason', '12345678', 'test', 'test');
SELECT Student_studentId_SEQ.NEXTVAL FROM DUAL;
Fyi -The Student table has a trigger to support the generation of a primary key (integer) based on a sequence when a new record is inserted.
What the above will do (from the Java app point of view) is to create a Student record and automatically select the student ID so that the student ID can be accessed via the resultset in Java.
I'm getting error "ORA-00911: invalid character". Can you please help?
Regards,
Jason
Edited by: user10394130 on Oct 13, 2008 2:40 AMYes, I'm referring to the studentId, which is generated via the Student table trigger on insert of a new record.
I've now verified that the following SQL works and it is "printing" the correct studentId.
DECLARE seqNbr_studentId NUMBER(12) := 0;
BEGIN
INSERT into Student (studentName, phone, email, address) values ('Jason', '12345678', 'test', 'test')
RETURNING studentId INTO seqNbr_studentId;
dbms_output.put_line(seqNbr_studentId);
END;
--> This prints the correct value of seqNbr_studentId that has been generated by the trigger. This is good.
However, I would like the studentId to be in a resultset (so that I can access this via Java Resultset.getInt(1) ), for example:
DECLARE seqNbr_studentId NUMBER(12) := 0;
BEGIN
INSERT into Student (studentName, phone, email, address) values ('Jason', '12345678', 'test', 'test')
RETURNING studentId INTO seqNbr_studentId;
SELECT seqNbr_studentId FROM DUMMYTABLE;
END;
Is this possible?
What I'm trying to do is to achieve the effect in SQL Server where I can simply do an SQL command "SELECT @@IDENTITY" where it returns the auto number from the newly inserted record.
Regards,
Jason
Edited by: user10394130 on Oct 13, 2008 2:08 AM
Edited by: user10394130 on Oct 13, 2008 2:56 AM -
Problem CREATE TABLE with PRIMARY KEY Still in Trouble ! Please Help!
Hi there !
I use the orcle 8i, and i don't know why i can't create table with any primary key EXample:
SQL> CREATE TABLE O_caisses
2 (No_caisse NUMBER(3) constraint caisses_pk PRIMARY KEY,
3 NB_BILLETS NUMBER(5)
4 )
5 /
CREATE TABLE O_caisses
ERROR at line 1:
ORA-18008: cannot find OUTLN schema
***********some Debuger show me this way: *********************
Well there r certain point u got to notice when creating a table with constraints.
1) U can create table with COLUMN level constraint.
2) U can create table with TABLE level constraint.
3) In COLUMN level constraint u can't give a constraint a name
but only mention the type of constraint.
4) In TABLE level constraint u can give a name to constraint.
Following are the examples of both
--COLUMN LEVEL
CREATE TABLE O_caisses
(No_caisse NUMBER(3) PRIMARY KEY,
NB_BILLETS NUMBER(5));
--TABLE LEVEL
CREATE TABLE O_caisses
(No_caisse NUMBER(3),
NB_BILLETS NUMBER(5),
constraint pk_caisse primary key (No_caisse));
********************And this is another one:*****************
SQL>grant create any outline to username;
BUT the problem is still present, i don't know what to do now !
Please could some body help me !
Thanks alot!
Luong.The clue is in the error message: the OUTLN schema is missing.
This is something Oracle 8i introduced to help manage the CBO (or soemthing equally geeky and internal). For some reason your database no longer has this user. It ought to be created automatically during installation (or upgrade) but catproct may not have completed probably or some over zealous admin type has dropped it.
Solution is to re-install (or re-upgrade) as you cannot create this user on their own. Alas.
HTH, APC -
Does ADF Business Components work well with tables without primary Key?
We have tables using unique index without primary key. Can ADF Business Components relate business objects based on the unique index columns of the tables?
Hi,
Regarding my question about the XML syntax for custom properties:
It turned out to be another problem in the Entity object definition that caused the JDeveloper error. Other entities let me add the custom property without problems. However should anybody ever need that XML syntax, here's how you add a custom property to an entity definition in the XML code:
<Attribute
Name="Id"
IsNotNull="true"
Precision="10"
Scale="0"
ColumnName="ID"
Type="oracle.jbo.domain.Number"
ColumnType="NUMBER"
SQLType="NUMERIC"
TableName="TABLE"
PrimaryKey="true">
<DesignTime>
<Attr Name="_DisplaySize" Value="22"/>
</DesignTime>
<Properties>
<CustomProperties>
<Property
Name="SequenceName"
Value="SEQ1"/>
</CustomProperties>
</Properties>
</Attribute>Best regards,
Bart Kummel
Edited by: Bart Kummel on Sep 8, 2009 1:14 PM -
Problem on CREATING TABLES with PRIMARY KEY
Hi there !
I use the orcle 8i, and i don't know why i can't create table with any primary key EXample:
SQL> CREATE TABLE O_caisses
2 (No_caisse NUMBER(3) constraint caisses_pk PRIMARY KEY,
3 NB_BILLETS NUMBER(5)
4 )
5 /
CREATE TABLE O_caisses
ERROR at line 1:
ORA-18008: cannot find OUTLN schema
Please could some body help me !
Thanks alot!
Luong.Luong,
Your syntax is fine. It looks like you don't have the correct database privileges to create the table. The error message you're getting suggests that you don't have CREATE ANY OUTLINE privileges. You should log in as a user than can grant these privileges and give yourself the correct privileges. I think the syntax is
SQL>grant create any outline to username;
Alison -
Auto Populate Field in One Table with Primary Key from another table.
Greetings all,
I have created two tables. One for Root Cause which will be the based description information of an analysis. Each Root cause can have many corrective actions.
My Table structure is as follows:
RCCA TABLE:
=====================================
Column Name Data Type Nullable
RCCAID NUMBER No
DESCRIPTION VARCHAR2(4000) Yes
SUMMARY VARCHAR2(4000) Yes
OWNER VARCHAR2(4000) Yes
DATEOFINCIDENT DATE Yes
STATUS VARCHAR2(4000) Yes
CORRECTIVE ACTION TABLE
=====================================
Column Name Data Type Nullable
CAID NUMBER No
RCCAID NUMBER No
CANUMBER NUMBER Yes
CACTION VARCHAR2(4000) Yes
DATEDUE DATE Yes
COMMENTS VARCHAR2(4000) Yes
So I have a form that creates the RCCA and then I have another form that I want to feed off of the first form. My thought was that when the RCCA was created, it would open a report of the RCCA and then in another region of the page I would add corrective action form. What I am looking to do is when I press the Create Corrective Action, it will automatically populate the RCCAID in the Corrective Action Table so that it is associated directly to the RCCA. I don't want to have to have someone know what the RCCAID is from teh RCA table because they are autogenerated.
There may be a better way to do this and since I am new to APEX and to Oracle Databases, I am just going with what my logic tells me. Any assistance or thoughts would be appreciated.
Assuming there would be some type of trigger?
I will have to be able to view each RCCA and CA in a report that customers will see.
Thanks in Advance
WallyHi Debasis,
Have a look on this
Quick note on IDENTITY column in SAP HANA
Regards,
Krishna Tangudu -
Bad exec plan when joining tables using primary keys together w/ Contains
Hello all...this is something that confuzzles me....
When joining 2 tables, the exec plan shows that the domain index is first accessed, before checking if there is a record in the other table using a highly selective index.
create table users
(userid varchar2(20),
name varchar2(100),
resume clob
create table seeker
(seekerid varchar2(20),
userid varchar2(20),
jobid varchar2(20)
create index user_idx on users(userid)
create index job_resume_index on users(resume)
indextype is ctxsys.context
create unique index seeker_unik on seeker(seekerid)
create index seeker_index on seeker(jobid,userid)
then sample records where inserted, then the text index was sync'ed.
Query and Execution Plan:
select u.userid, u.name
from users u, seeker s
where s.jobid = 'HJOBP000000000218627'
and u.userid = s.userid
and contains(resume,'texas') > 1
Execution Plan
0 SELECT STATEMENT Optimizer=CHOOSE (Cost=3 Card=1 Bytes=72)
1 0 NESTED LOOPS (Cost=3 Card=1 Bytes=72)
2 1 TABLE ACCESS (BY INDEX ROWID) OF 'USERS' (Cost=2 Card=1
Bytes=30)
3 2 DOMAIN INDEX OF 'JOB_RESUME_INDEX' (Cost=0)
4 1 INDEX (RANGE SCAN) OF 'SEEKER_INDEX' (NON-UNIQUE) (Cost=
1 Card=1 Bytes=42)
The problem with execution plan is if the domain index returns huge number of records i.e. 40k rows, then it has to check each userid with the SEEKER table, and returns only 10 rows. I can add a hint to specify the use of the user_idx instead of the domain index to improve performance.
My question is how does the database determine when to use the domain index or to use other highly selective index with out the aid of a HINT. The trace file shows the use of "CTXSYS"."TEXTOPTSTATS".ODCIStatsIndexCost and "CTXSYS"."TEXTOPTSTATS".ODCIStatsFunctionCost. Are these used to compute and compare the cost of each index and decide on what index to used? If so, why does it return a lower cost for domain index when the btree index is more efficient? I have all statistics gathered for all tables and indexes (inc dr$ tables and its indexes)
Thanks,
jojoHi,
What I'm pasting here is actually from Ch9 of Expert PL/SQL. It shows what happens during a select with CONTAINS. It does not include a join with another table, or an additional column in the where clause. Hope it helps.
================================================
By default, the Extensible Query Optimizer is enabled. When enabled, the Extensible Query Optimizer can determine the I/O and CPU cost associated with the CONTAINS predicate, find the cost of each call to the CONTAINS() function, and determine the selectivity of the CONTAINS predicate.
To see this in action I ran the basic select earlier. Examining the SQL trace shows the steps.
Step 1 - Determine the I/O and CPU cost of the CONTAINS() function:
--Available online as part of contains_trace.doc
"CTXSYS"."TEXTOPTSTATS".ODCIStatsFunctionCost(
sys.ODCIFuncInfo('CTXSYS',
'CTX_CONTAINS',
'TEXTCONTAINS',
2),
cost,
sys.ODCIARGDESCLIST(
sys.ODCIARGDESC(
2, 'DOCUMENT_REPOSITORY', 'PLSQL',
'"DOCUMENT"', NULL, NULL, NULL),
sys.ODCIARGDESC(3, NULL, NULL, NULL, NULL, NULL, NULL)),
NULL,
'constitution',
sys.ODCIENV(0,0,0,1));
Step 2 Determine the selectivity of the CONTAINS predicate
-- Available online as part of contains_trace.doc
"CTXSYS"."TEXTOPTSTATS".ODCIStatsSelectivity(
sys.ODCIPREDINFO('CTXSYS',
'CTX_CONTAINS',
'TEXTCONTAINS',
32),
sel,
sys.ODCIARGDESCLIST(
sys.ODCIARGDESC(3, NULL, NULL, NULL, NULL, NULL, NULL),
sys.ODCIARGDESC(5, NULL, NULL, NULL, NULL, NULL, NULL),
sys.ODCIARGDESC(2, 'DOCUMENT_REPOSITORY', 'PLSQL',
"DOCUMENT"', NULL, NULL, NULL),
sys.ODCIARGDESC(3, NULL, NULL, NULL, NULL, NULL, NULL)),
0,
NULL,
NULL,
'constitution',
sys.ODCIENV(0,0,0,1));
Step 3: Determine the I/O and CPU cost of the CONTAINS predicate
-- Available online as part of contains_trace.doc
"CTXSYS"."TEXTOPTSTATS".ODCIStatsIndexCost(
sys.ODCIINDEXINFO('PLSQL',
'EXPERT_IDX',
sys.ODCICOLINFOLIST(
sys.ODCICOLINFO('PLSQL', 'DOCUMENT_REPOSITORY',
'"DOCUMENT"', 'BFILE', NULL, NULL)),
NULL,
0,
0),
50.00000000,
cost,
sys.ODCIQUERYINFO(
2,
sys.ODCIOBJECTLIST(sys.ODCIOBJECT('SCORE', 'CTXSYS'))),
sys.ODCIPREDINFO('CTXSYS', 'CONTAINS', NULL, 0),
sys.ODCIARGDESCLIST(
sys.ODCIARGDESC(3, NULL, NULL, NULL, NULL, NULL, NULL),
sys.ODCIARGDESC(5, NULL, NULL, NULL, NULL, NULL, NULL),
sys.ODCIARGDESC(2, 'DOCUMENT_REPOSITORY', 'PLSQL',
'"DOCUMENT"', NULL, NULL, NULL),
sys.ODCIARGDESC(3, NULL, NULL, NULL, NULL, NULL, NULL)),
1,
NULL,
'constitution',
sys.ODCIENV(0,0,0,1));
Note: The 50.00000000 in this last call is the selectivity retrieved from step 2.
Only after these three steps complete does the query actually get executed:
-- Available online as part of contains_trace.doc
SELECT score(1), title
FROM document_repository
WHERE CONTAINS(document, 'constitution', 1) > 0
ORDER BY 1 DESC;
This is not the end of the processing though. To retrieve the records, the $I table (the index data table) is queried as follows:
-- Available online as part of contains_trace.doc
SELECT /*+ INDEX(i) */ TOKEN_FIRST,TOKEN_LAST,TOKEN_COUNT,ROWID
FROM "PLSQL"."DR$EXPERT_IDX$I" i
WHERE TOKEN_TEXT = 'CONSTITUTION'
AND TOKEN_TYPE = 0
ORDER BY TOKEN_TEXT, TOKEN_TYPE, TOKEN_FIRST;
Note: The search term is UPPERCASE when querying against the DR$EXPERT_IDX$I table because all of the tokens are stored in uppercase by default. The original SELECT was in lowercase. This automatic conversion to uppercase allows the Text index to provide case-insensitive searching.
This query returns the following result:
TOKEN_FIRST TOKEN_LAST TOKEN_COUNT ROWID
1 2 2 AAAN54AAEAAAOvEAAo
Finally, the $R table (the rowid table) is queried.
-- Available online as part of contains_trace.doc
SELECT data
FROM "PLSQL"."DR$EXPERT_IDX$R"
WHERE row_no = 0;
Only now do I see the results of my query:
SCORE(1) TITLE
55 United States Constitution
8 Bill of Rights
Keep in mind that modifications to the query, such as the addition of other columns in the where clause or the addition of operators, will result in a different trace.
=============================== -
Source tables for forms and tabular forms must have a primary key.
Why does HTML DB 2.0 return the message
"Source tables for forms and tabular forms must have a primary key."
when trying to generate a "Report and Form" page based on a view defined like "create view <applicationschema>.a as select * from <sourceschema>.b" ?
It should be possible for HTML DB to "see" that the table "<sourceschema>.b" already has a primary key.
bw - ChristianChristian,
In the create application wizard, when creating form or tabular form pages, you can only use tables with primary keys, and not views, because that wizard is automatically deriving the primary key from the table definition. If you want to build forms on views or tables without a primary key, you need to use one of the create form wizards while working on an existing application. Those wizards allow you to pick your own column as a primary key column.
Regards,
Marc -
Fast Refresh using two non-primary key tables
Hi,
I have a materialized view based on two tables with an outer join clause. Both the tables do not have a primary key so I had created materialized view log with row-id on each of them but still I am not able to bring out the fast refresh option for the materialized view. My question is can I have a fast refresh option for materialized view built from two tables without primary keys and having an outer join clause????. If possible please send me some sample scripts for quicker understanding.
Thanks and Regards,
SudhakarI was able to create a fast-refreshable MV, on tables without any PK. Unfortunately, I can't complete all the steps since my setup is a multi-master advanced replication (which ABSOLUTELY requires the tables to have PK's). Here are anyway the steps I took. Note that ORA102 is my (definition) master site, and MVDB is my MV site. The tables were created under user HR, and my master group is called "hr_repg". Here are my steps:
HR on ora102 >create table countries_no_pk as select * from countries;
Table created.
HR on ora102 >create table regions_no_pk as select * from regions;
Table created.
HR on ora102 >create materialized view log on countries_no_pk with rowid;
Materialized view log created.
HR on ora102 >create materialized view log on regions_no_pk with rowid;
Materialized view log created.
REPADMIN on ora102 >exec dbms_repcat.suspend_master_activity('hr_repg')
PL/SQL procedure successfully completed.
Elapsed: 00:00:02.68
REPADMIN on ora102 >BEGIN
2 DBMS_REPCAT.CREATE_MASTER_REPOBJECT (
3 gname => 'hr_repg',
4 type => 'TABLE',
5 oname => 'countries_no_pk',
6 sname => 'hr',
7 use_existing_object => TRUE,
8 copy_rows => FALSE);
9 END;
10 /
PL/SQL procedure successfully completed.
Elapsed: 00:00:05.19
REPADMIN on ora102 >set timing off
REPADMIN on ora102 >BEGIN
2 DBMS_REPCAT.CREATE_MASTER_REPOBJECT (
3 gname => 'hr_repg',
4 type => 'TABLE',
5 oname => 'regions_no_pk',
6 sname => 'hr',
7 use_existing_object => TRUE,
8 copy_rows => FALSE);
9 END;
10 /
PL/SQL procedure successfully completed.
(note that you ABSOLUTELY need the rowid's in your select statement for an MV with joins):
MVIEWADMIN on mvdb >CREATE MATERIALIZED VIEW hr.complex_mv refresh fast as
2 select c.rowid "C_ROW_ID", r.rowid "R_ROW_ID", c.COUNTRY_ID, c.COUNTRY_NAME,
3 c.REGION_ID, r.REGION_NAME from hr.regions_no_pk@ora102 r, hr.countries_no_pk@ora102 c
4 where c.region_id = r.region_id (+);
Materialized view created.
MVIEWADMIN on mvdb >BEGIN
2 DBMS_REPCAT.CREATE_MVIEW_REPOBJECT (
3 gname => 'hr_repg',
4 sname => 'hr',
5 oname => 'complex_mv',
6 type => 'SNAPSHOT',
7 min_communication => TRUE);
8 END;
9 /
PL/SQL procedure successfully completed.
REPADMIN on ora102 >BEGIN
2 DBMS_REPCAT.GENERATE_REPLICATION_SUPPORT (
3 sname => 'hr',
4 oname => 'countries_no_pk',
5 type => 'TABLE',
6 min_communication => TRUE);
7 END;
8 /
PL/SQL procedure successfully completed.
(wait when the entries in DBA_REPCATLOG is empty)
REPADMIN on ora102 >exec dbms_repcat.resume_master_activity('hr_repg')
Hope that can help you. If that doesn't work, tell us where it bombs.
Daniel -
Can the Primary Key also be Primary key in another table
Hi all,
I am working on a project. The project specification says:
Project table contains details of projects and the project number *(proj_no)* is the key.
project ( proj_no , proj_date, proj_desc, proj_type, proj_status, s_no, cust_no)
purchase_order table contains details of the purchase orders for each project and the combination of project
number and a purchase order number *(proj_no, po_no) form the key.*
purchase_order ( proj_no , po_no, po_date)
How can I have proj_no in the project table and in the purchase_order as primary keys?
If I create a composite key in the purchase_order table making the ( proj_no, po_no) as primary key. How can I make the project_no in the project table a primary key too?
Is there a solution for it?
CREATE TABLE purchase_order(
po_no NUMBER(5) NOT NULL,
proj_no NUMBER(5) NOT NULL,
po_date date,
CONSTRAINT p_o_po_no_proj_no_pk PRIMARY KEY (po_no,proj_no));
Thanks!!!Hi,
I think I'd set the project no in the projects table a primary key, and project no in the purchase orders table a foreign key constraint to the projects table, combined with a unique, not null constraint in the table.
That, in addition to a unique, not null constraint on the purchase orders column, and a composite primary key should fulfill the requirements.
Best of luck!
Johan
Maybe you are looking for
-
Form routines in CRM down loaded from R/3 for pricing
Hi all, we have the following scenario: 1) We have created an access sequence for tax condition in R/3 using standard form routines / requirements 7 (domestic) and 8 (export). 2) The cutsomizing and conditions are down loaded to CRM (4.0) and the pri
-
Install.app Creative Suite CS5 will not start up on Mac OS X 10.9.4
After a clean unistall I already reinstalled CS4, now i am trying to install the upgrade for disk or downloaded version from the Adobe site for Creative Suite Design Standard CS 5. When I try to start up the install.app I get the message that Install
-
When I typed in Christmas, it was underlined in red. Which means that it wasn't in the dictionary. When I right-clicked on it, there were no spelling suggestions and I had to add it to the dictionary myself. Christmas is a word and as far as I know,
-
Have only got test call page on my android phone and Can't access my contacts list
Help
-
How to write control file below data
Hi, Here is my table create table sample1 (name varchar2(5), num number(2)); sample.txt(Datafile) vikram12 sharma13 sonu 14 Here is my control file load data infile 'C:\sample.txt' into table sample1 fields terminated by "," optionally enclosed by '"