Adding primary key column in populated table
Hi all,
I am trying to add a column into a table which is already populated. The column which needs to be added has to be Primary Key.
As expected, oracle popped up the error (ORA-01758) that, a NOT NULL column cannot be added unless the table is empty.
One possibe way is to create a new temp table and then transfer all the current data...renaming the temp table later.
Is there any other way to accomplish this task?
Thanks
Hello,
As error suggested you cannot add a not null constraint on new column to table which is already populated. What else you can do beside you got fairly simple and quick idea of creating a temp table and moving data?
You can add new column but null, update the column with the values and alter the table marking column as not null. But your idea of empty temp table is simple and quick one.
CREATE TABLE my_objects
AS
SELECT 'my_new_column' my_new, owner
FROM all_objects
WHERE ROWNUM < 1;
_Not Null_
ALTER TABLE MY_OBJECTS
MODIFY(MY_NEW NOT NULL);
_Primary key_
ALTER TABLE MY_OBJECTS
ADD CONSTRAINT MY_OBJECTS_PK
PRIMARY KEY
(MY_NEW);Regards
Similar Messages
-
Add primary key column to fact tables?
Our datawarehouse folks asked me if they could add a primary key column in the BPC fact tables. Anyone know if this is possible??
Edited by: Shawn Freundschuh on Apr 3, 2009 12:27 PMWell.. based on my expeirence, it is not possible.
When you run admin console, sometimes it will return error message.
I tried it before but you can try it again. Maybe developer changed its behavior.
Thanks. -
Primary key column as the key of the cache
Hi All,
I am implementing a cache backed by HibernateCacheStore for a table. Cache contains key as the primary key of the table and value as the entire row in object format. the primary key is generated by hibernate.
when i am inserting new rows through coherence (i.e cahce.put) what persistence strategy should is use to set the cache entries.
I cannot use cache.put (key, value) because key is the primary key of the table which is not generated yet.
and if i use the session.save(value) the persisted value is not in the cache.
is there any mechanism to map the cache key as the primary key column of the table.
Regards
SHi -
Using Hibernate as a CacheStore for Coherence, the key of the cache entry is also the key of the entity
being stored via Hibernate. For this reason keys for new cache entries must be generated ahead of time.
A UUID can be used. The commons component of the Incubator project has a key generation utility that
might be worth looking at.
/Mark -
How to update primary key column
Hi,
Can you suggest me best workaround/algorithm for below task:
(Oracle 10g, Solaris OS.)
Situation:
Table P has primary key column "Code", child tables F1, F2, ..., F15 reference with foreign key column "P_Code" column "P.Code", and we don't know which of the child tables has data for particular "P.Code" value.
Task:
Change "P.Code" value from 100 to 200. So that result would be that record P[Code = 100] should be updated as:
update P set
Code = 200
where Code = 100;And child tables column "P_Code" should be updated as:
update F1, F2, .., F15 set
P_code = 200
where P_code = 100;The best solution would be that one very easily can repeat that task.
Edited by: CharlesRoos on 28.12.2010 12:10If you are looking for reusable and repetitive solution, then may be...
SQL> CREATE TABLE p (p_code NUMBER PRIMARY KEY);
Table created.
SQL> INSERT INTO p VALUES(100);
1 row created.
SQL> INSERT INTO p VALUES(300);
1 row created.
SQL> INSERT INTO p VALUES(500);
1 row created.
SQL> commit;
Commit complete.
SQL> CREATE TABLE F1 (p_code NUMBER REFERENCES p(p_code));
Table created.
SQL> CREATE TABLE F2 (p_code NUMBER REFERENCES p(p_code));
Table created.
SQL> CREATE TABLE F3 (p_code NUMBER REFERENCES p(p_code));
Table created.
SQL> INSERT INTO F1 VALUES(100);
1 row created.
SQL> INSERT INTO F3 VALUES(100);
1 row created.
SQL> INSERT INTO F2 VALUES(500);
1 row created.
SQL> commit;
Commit complete.
SQL> CREATE OR REPLACE PROCEDURE update_child_parent(pi_p_code_old NUMBER,
2 pi_p_code_new NUMBER) IS
3 CURSOR table_to_update IS
4 SELECT table_name,
5 to_number(extractvalue(xmltype(DBMS_XMLGEN.getxml('SELECT count(*) c FROM ' ||
6 table_name ||
7 ' WHERE p_code=' ||
8 pi_p_code_old)),
9 '/ROWSET/ROW/C')) cnt
10 FROM user_tables
11 WHERE table_name IN ('F1', 'F2', 'F3');
12
13 BEGIN
14 EXECUTE IMMEDIATE 'ALTER TABLE p DISABLE PRIMARY KEY CASCADE';
15 UPDATE p SET p_code = pi_p_code_new WHERE p_code = pi_p_code_old;
16 FOR i IN table_to_update LOOP
17 IF i.cnt > 0 THEN
18 EXECUTE IMMEDIATE 'UPDATE ' || i.table_name || ' SET p_code=' ||
19 pi_p_code_new || ' WHERE p_code=' || pi_p_code_old;
20 END IF;
21 END LOOP;
22 EXECUTE IMMEDIATE 'ALTER TABLE p ENABLE VALIDATE PRIMARY KEY';
23 END update_child_parent;
24 /
Procedure created.
SQL> EXECUTE update_child_parent(100,200);
PL/SQL procedure successfully completed.
SQL> SELECT * FROM p;
P_CODE
200
300
500
SQL> SELECT * FROM F1;
P_CODE
200
SQL> SELECT * FROM F2;
P_CODE
500
SQL> SELECT * FROM F3;
P_CODE
200
SQL> INSERT INTO p VALUES(300);
INSERT INTO p VALUES(300)
ERROR at line 1:
ORA-00001: unique constraint (HR.SYS_C005931) violated
SQL> EXECUTE update_child_parent(500,900);
PL/SQL procedure successfully completed.
SQL> SELECT * FROM p;
P_CODE
200
300
900
SQL> SELECT * FROM F2;
P_CODE
900
SQL> -
How to know primary key column name form a table name in sql query
Suppose I only know the table name. How to get its primary key column name from the table name?
ThanksViews don't have primary keys though their underlying tables might. You'd need to pick apart the view to determine where it's columns are coming from.
You can select the text of the view in question from user_views. -
Knowing the primary key columns of the given table
Hi,
How can I get the primary key columns of the given table?
Regards,
Sachin R.K.You can find the constraint_name from all_constraints/user_constraints for constraint_type = 'P' (which is the primary key constraint).
And then see which columns are in for the constriant_name
in all_cons_columns/user_cons_columns view.
Below is the example
select acc.column_name from
all_cons_columns acc, all_constraints ac
where acc.constraint_name = ac.constraint_name
and acc.table_name = 'DEPT' AND acc.owner = 'SCOTT'
and ac.constraint_type = 'P'
Hope this helps
Srinivasa Medam -
For some strange reason when I modified a form, (commented out some code in a when-window-activated trigger) I now get the following error.
CDG-01141 ERROR: Module Component Table Usage GR1130A.CUSTOMER.GR_CUSTOMER.GC: Table usage GR_CUSTOMER requires primary key column for referential integrity
I am sure this is not related to my change, but do not know what may have caused this or how to fix it.
Anyone seen this error before? been able to fix it?
Thanks!
Windows 7
Oracle Database 10g Enterprise Edition Release 10.2.0.3.0
Designer Version 6.5.95.4.8You know that Developer/Designer 6i is not certified for Windows 7, right? Also, your version is not the latest one, so you can try to install the latest patch set first.
>Table usage GR_CUSTOMER requires primary key column for referential integrity
Check if there is a PK in the table definition (not in the database, but in Designer). -
OMPLUS retrieve table primary key column
I'm trying to retrieve the primary key column associated with a table via OMBPLUS.
The following command successfully returns the PK name
OMB+> OMBRETRIEVE TABLE 'ODS_REGION' GET PRIMARY_KEY
REGN_PKWhen I add the GET COLUMNS clause (as per API documentation), I'm still only getting the pk name.
OMB+> OMBRETRIEVE TABLE 'ODS_REGION' GET PRIMARY_KEY GET COLUMNS
REGN_PKAny suggestions on what I might be doing wrong?Worked it out. Syntaxt needed is:
OMBRETRIEVE TABLE 'ODS_REGION' PRIMARY_KEY 'REGN_PK' GET COLUMNS
(no GET between table name and PRIMARY_KEY clause) -
Updation of table records having 5-6 primary key columns.
I have a table structure having 12 primary composite keys.I have created report + form on this table.My requirement is to update the table by using form items fields.I am taking help of url option on report attribute page of application to fetch data on form page when we click on edit link of report page.Now i am having two problems which are as follows:-
(i)I am unable to update data as requirement is to update 5 to 6 primary fields along with other non primary keys.I tried to create Pl/SQL process which will run update query but this process is not updating values.Is there any way that i could fetch data direct from database table in query rather then taking item values.Is there any other workaround?
(ii)One of the primary key column contains records which have ' , ' in them .For ex:- cluth,bearing.So when i get navigated to edit page i am only getting text displayed as clutch i.e. text before ',' is getting displayed in text field while comma and the text after this is not getting displayed in text field of form page.
Any solutions will be very helpful.
Thanks
AbhiHello Abhi,
>> I am unable to update data as requirement is to update 5 to 6 primary fields along with other non primary keys
APEX wizards support a composite PK with up to 2 segments only. For every other scenario, you’ll have to manually create your DML code.
If you have control over your data model, I would listen very carefully to Andre advices. Using a single segment PK is the best practice way. If you can’t add PK to your table, it seems that you’ll have to write your own DML code. The Object Browser option of creating a Package with methods on database table(s) can be a great help.
>> … I am taking help of url option … One of the primary key column contains records which have ' , ' in them …
Using the f?p notation, to pass a comma in an item value, you should enclose the characters with backslashes. For example,
\cluth,bearing\In your case, it should be the item/column notation.
http://download.oracle.com/docs/cd/E17556_01/doc/user.40/e15517/concept.htm#BCEDJBEH
Regards,
Arie.
♦ Please remember to mark appropriate posts as correct/helpful. For the long run, it will benefit us all.
♦ Author of Oracle Application Express 3.2 – The Essentials and More -
Modifying column adding primary key constraint
how can we alter a table and modify a column and add a primary key constraint to it??
987018 wrote:
can't we add a primary key constraint using the modify command?If the column already exists, and ther is no existing primary key, then
SQL> create table t (id number, descr varchar2(10));
Table created.
SQL> alter table t modify (id not null primary key);
Table altered.If the column does not yet exist and ther is no primary key then:
SQL> create table t1 (descr varchar2(10));
Table created.
SQL> alter table t1 add (id number not null primary key);
Table altered.John -
Ability to auto create a primary key column while creating an entity ?
Product : oracle data modeler ( 3.0.0.665 32 bit version ) on windows XP Professional , : Target DB Oracle 11GR2
I am new to Mozilla Rhino. Is it feasible to have a mechanism where in the primary key column name would be auto generated when the entity ( name ) is just created for the first time, and it has no columns defined yet . For e.g. one could create an entity named vendor , and after the table name is typed in, a column vendor identifier,of type numeric , is to be auto created. This mechanism should work even if the entity name changes, and the primary key is in format {tablename}_id , but it should not , if the primary key was manually set in later and is not in the expected format.I created this script (1) for adding an ID column (using a specific domain) to all supertype entities that do not already have an ID attribute, and a script (2) for adding primary key constraints to all ID attributes.
- Marc de Oliveira
Script 1:
entities = model.getEntitySet().toArray();
domain = model.getDesign().getDomainSet().getByName('Integer DIS Domain');
for (var e = 0; e<entities.length;e++)
entity = entities[e];
if (entity.getHierarchicalParent()==null)
attributes = entity.getAttributes().toArray(); // find existing attributes
IDattribute = null;
for (var a = 0; a<attributes.length; a++) // look for an ID attribute
if (attributes[a].getName()=="ID") { IDattribute = attributes[a]; }
if (IDattribute==null) // if an ID attribute was not found...
IDattribute = entity.createAttribute(); // create a new ID attribute
IDattribute.setName("ID");
IDattribute.setDomain(domain);
entity.moveToIndex(IDattribute,0); // move ID attribute to top
Script 2:
entities = model.getEntitySet().toArray();
for (var e = 0; e<entities.length;e++)
entity = entities[e];
attributes = entity.getAttributes().toArray(); // find existing attributes
IDattribute = null;
for (var a = 0; a<attributes.length; a++) // look for an ID attribute
if (attributes[a].getName()=="ID") { IDattribute = attributes[a];}
if (IDattribute!=null) // if an ID attribute was found...
key = entity.createCandidateKey(); // Create a key
key.add(IDattribute); // Add the ID attribute to the key
key.setPK(true); // Define the key as a primary key
PKName = entity.getName().replace(" ","_")+"_PK";
key.setName(PKName); // Define the key as a primary key
entity.setPK(key); // workaround for bug...
} -
Primary key columns dropped with cascade constraint
Hi,
My developer dropped one column from table which was having primary key . (primary key on two columns now one column is there)
he used SQL > alter table table_name drop columns cascade constraints.
Now i want to enable the constraint. the constraint is not there. if i am creating the primary key with the existing single column alone.
My question how do i know which was the dependency it had? (like foreign key / child tables it had?) and how to rebuild the relationship?
Thanks
--RamanHemangi,
i am just wondering before dropping the column we had primary key. (as i mentioned earlier the primary key was created for two columns ) .
now if i am re-building by just adding primary key to the existinc column alone i am facing this error.
Let me see if there is any null or duplicate values in the column.
Thanks
--Raman -
How can i set primary key after creating a table ?
hi friends
thank you for all the support you have given me . i have doubt ,can we set primary key for a column after creating the table
I have added a column named idno after creating the table . i want to set that column as primary key . i tried this
table name = address
column name = idno
ALTER TABLE ADDRESS MODIFY (idno PRIMARY KEY(idno))
,but not working
if anbody knows the solution pls reply
thanks and regards
nevhow does the other users know which is the primary key for this table?....the other user needs to execute this query...and modify the query accordingly
select aa.table_name,aa.column_name,aa.constraint_name,bb.constraint_type
from user_cons_columns aa,user_constraints bb
where aa.constraint_name = bb.constraint_name
and aa.table_name = 'TEST_EMP' and bb.constraint_type = 'P'; -
How can I use the SQL to create a primary key for a existing table?
create table a(bm number,mc varchar2(20));
when the table was created,i want to make the column bm as
the primary key and my SQL is "alter table a enable primary key bm",the system show
me error,how can I write the right one?create table a(bm number,mc varchar2(20));
when the table was created,i want to make the column bm as
the primary key and my SQL is "alter table a enable primary key bm",the system show
me error,how can I write the right one? You do not have any primary key defined on your table yet, so, it does not make sense to enable it (if at all possible) !
You need to add PRIMARY KEY using something like this:
SQL> alter table a add constraint pk_a_bm primary key (bm) ; -
How to find out the primary key of oracle apps tables
Hii,,
My Question is How to find the primary key in the apps table...Is there any Query or other way to find out???
for eg.
I want to find out the primary key of the AP_INVOICES_ALL table...just tell me how can i get the primary key of this table.
I am currently using toad for the query..
Please guide me...you can define the primary key when you create table
or add the primary key after the table creation by 'ALTER TABLE ... ADD constraint pk_nme primary key (col1, col2)';
you could use below sql to check the detail of primary key:
1) check out the table definition directly:
select dbms_metadata.get_ddl('TABLE','EMP') FROM DUAL;
2) check out the columns of primary key:
select * from user_constraints where constraint_type='P' AND table_NAME='EMP';
select * from user_cons_columns where CONSTRAINT_NAME='PK_EMP';And BTW, it is madam, not sir. :)
Edited by: PhoenixBai on Dec 17, 2010 1:07 PM
Maybe you are looking for
-
SAP Ides ECC 6.0 Install: Import ABAP - Package SAPDODS Error - ORA-00903
Experts, Good Morning! I'm trying to install SAP IDES ECC 6.0 version on a Windows 2008 R2 Server with Oracle 11g DB (11.2). System Info: 16GM RAM & 600GB Hdd. Prereqs passed. I'm getting the following error during the Import ABAP phase (16 of 29) in
-
Hi, I've been having a few issues with the trackpad, mostly with clicks lately. Today the cursor went rogue and started opening all sorts of programs and files, moving to different screens and opening things there, generally going crazy and not respo
-
How to get password for the Sql server 2008 r2
Always when a user forgets a SA password , Blogs suggest to get into the server through windows Authentication having SysAdmin , and change the password for user SA. Sir, Is there any other methods to retrieve or see the password what we assigned be
-
Details scenario navigation steps for async_sync bridge for bapi_po_create
· Integrating web application and SAP R/3 system. A third party web-based purchasing application posts XML data to the XI plain HTTP adapter for purchase order creation. The purchase order data is mapped to RFC-XML; BAPI_PO_CREATE is th
-
I just bought the top of the range of the new iPad (64GB with Retina Display), and iPad smart Cover from the shop in Thailand, Apple just launched the 4th gen of iPad yesterday. I spent a lot of money to get the 3rd Gen. Wanna get the new one instead