SQL & PL/SQL :: How To Use Identity Column In Table
Oct 16, 2012
i created one table which has id with number datatype for which i created sequence and stored procedure so suppose i inserted two row there it's inserting and id is showing 1, 2 again i truncate that table and again i inserted value there now the id is starting from 3 , 4 so my question is that after truncating table can't it insert from 1 in id column?
i have a project that needs to have a identity number in the table.this is the table:
create global temporary table BOOK_INFO ( row_id number(5), BOOK_TITLE char(20), BOOK_AUTHOR char(15) ) on commit preserve rows;
i dont know how can i generate row_id, in sybase i can only set the datatype of row_id in IDENTITY and it will automatically generates number and as the transaction ended the row_id will automatically back to 1.
in oracle i tried to create sequence but it didnt back to 1 when the transaction/procedure ended.. Like for example if the procedure ended and the last row_id inserted in the table is 300 the next run of the procedure will start in 301. but i need to start in 1 in every run of the procedure.
Also, i tried to set the variable v_row_id to 0 and it increment by 1 as it insert in the table, but the problem is there are times that in 1 book_title there is more than 1 author. so the v_row_id of the book_title with more than 1 author is all the same.Here is my query:
insert into BOOK_INFO (select v_row_id, BOOK_TITLE, BOOK_AUTHOR from LIBRARY);
My company has a "generic information management platform" based on Oracle,
including:
Oracle Identity Manager 10g Lotus Oracle Internat Directory 10g Oracle Portal 10g Oracle E-Business Employee Oracle E-Business User Management Microsoft Active Directory Mail System Oracle Database
All above these systems constitute the generic information management platform. --------------------------------------------------------------------------------------- There are 60,000 user records in the Oracle Database, lots of user records are duplicate, invalid and redundant. We want delete them by Oracle Identity Manager. But Oracle Identity Manager has no bulk deletion of users function!!!
So, we want customized development this generic information management platform, specifically customized development Oracle Identity Manager 10g's administrator interface.
We want add a JSP page, use this JSP page to bulk delete users. (user number > 60,000) ---------------------------------------------------------------------------------------- What's should we do? We can't directly manipulate the database to delete the users, all users are associated by API and exist in many systems. ----------------------------------------------------------------------------------------
I am trying the new Oracle 12c and its feature to create columns with the keyword IDENTITY. I create a table CREATE TABLE xt (a NUMBER GENERATED by default AS IDENTITY PRIMARY KEY, b VARCHAR2(10));
And populate it, sometimes specifying the value for a and sometimes relying on the system to generate the value:
INSERT INTO xt (b) values ('a');INSERT INTO xt (b, a) values ('b', default);INSERT INTO xt (b, a) values ('c', 3);INSERT INTO xt (b) values ('d');INSERT INTO xt (b) values ('e');
The problem is that the fourth INSERT fails because the system tries to use the value 3 which is already taken. The fifth statement gets the value 4.
And the table now contains: A B - -1 a 2 b 3 c 4 e Is there something I am missing? I understood that by specifying BY DEFAULT, I would be allowed to sometimes specify values on my own without them interfering with the generated values. I now that the same thing works correctly in MySQL (where I would get five rows from 1 to 5 with the same INSERT statements) /nikos
(1) how can i fill some value in a table column based on some existing column value automatically without user intervention. my actual problem is i have 'expiry date' column and 'status'. the 'status' column should get filled automatically based on the current system date. ex: if expiry date is '25-Apr-2011' and current date is '14-May-2011', then status should be filled as 'EXPIRED'
(2)hOw can i build 'select' query in a report (report 6i) so that it will show me list of items 'EXPIRED' or 'NOT EXPIRED' or both expired and not expired separately in a single report based on user choice. 'EXPIRED' & 'NOT EXPIRED' can be taken from the above question no. 1.
if a table contains two columns and both are part of the primary key of that table (Kind of obvoius).
should i opt for a index organized tbale in this case ?Or should i opt for another running sequential colum which would serve as a primary key of this table and define the actual two columns of the system as unique keys.
there is a drawback if a most of the tables of a database contain composite primary keys?
I am trying to join column names from a table with data from a different table. I think i should be able to pass the parameter to a 'select list' in a query. Look at my sample data below. And the data in sales table can grow till 15 rows and similarly corresponding columns in saleshist.
I have two table country and state.Columns are given below
SQL> DESC Country
Name Null? Type ----------------- -------- -------------- PRIMARY_KEY NOT NULL NUMBER DISPLAY_ORDER NOT NULL NUMBER NAME NOT NULL VARCHAR2(50) TREE_POSITION NOT NULL VARCHAR2(250) PARENT_ID NUMBER
SQL> desc state Name Null? Type ----------------- -------- ------------------------- PRIMARY_KEY NOT NULL NUMBER DISPLAY_ORDER NOT NULL NUMBER NAME NOT NULL VARCHAR2(50 CHAR) VALUE NOT NULL VARCHAR2(50 CHAR) TREE_POSITION NOT NULL VARCHAR2(250 CHAR) PARENT_ID NUMBER
Now I have to insert the values in the state table taking from the country table.
EXAMPLE :
INSERT INTO STATE (PRIMARY_KEY, DISPLAY_ORDER, NAME, VALUE, PARENT_ID, TREE_POSITION) VALUES (251, 1, 'Alaska', 'AK', 233, 'STAT_USUS_AKAK');
but here the tree position is static it can be anything at the client side so I want to make it dynamic. So to make dynamic what I have used is mentioned below:
INSERT INTO STATE (PRIMARY_KEY,DISPLAY_ORDER,NAME, VALUE, PARENT_ID, TREE_POSITION) VALUES
[code].....
Now I want that Quote: select tree_position from L_STATE_ITEM where name ='United States')||'_ALAL' which i have used in the state table to put value in the tree_position, I want to make the other half part after the concatenation operator "_ALAL" also dynamic.
So I was just wondering If I can pic that value from the "VALUE COLUMN" of the same table.
How can I add new column at the specified location in a oracle table? I am having a flat file from which data is inserted to the table..But initially I don't need that column so I m not having this column in the table but if further i need that column at the particular location then how can I do this..?
I have some tables. TABLE1 contains columns called query_id and a column called List_name TABLE2 holds a list of data and the TABLE_NAME = value in TABLE1 held under LIST_NAME TABLE3 contains column with Query_ID and other info.
Is it possible to grab the entry in TABLE1 under LIST_NAME as a TABLE_NAME in a data source?
i'v a problem regarding dual table,i logged to oracle as sys as sysdba and i add a column to dual table and then want to delete that added column but oracle gives "ORA-12988: cannot drop column from table owned by SYS"
i'm not able to drop any user oracle gives "ORA-00604: error occurred at recursive SQL level 1" "ORA-01031: insufficient privileges"
another error:: SP2-0575: Use of Oracle SQL feature not in SQL92 Entry Level oracle gives error when i want to switch user all problems starts when i add that column to dual table
I have one table which has 90 columns all has varchar2 datatype except one Column[primary key (Number)]. In this Table we have 1000 records, I want to fetch those records from Table which has value in all 90 columns means there is no null value in any column.
I know simple method Like this :-
column_name1 IS NOT NULL AND Column_name2 IS NOT NULL.
Like this we can write IS NOT NULL condition for all column.Is there any other way to write this Query because it makes Query very longer and it is very tedious job to write this Condition for all Columns.
With Data in a table, is it possible to find out the table name and column name? Means i know the account number (data) of the table and with this data i want to find out column name and table name.
If there are 100 colums or above in a table and we dont want select a single(any one) column from those 100 columns. is there any command or function to do this in oracle.
I can do it by writting names of all 99 columns but as this method is lenghty, so need some efficient way to do this.
like in SQL server we have a "except" keyword through which we can rule out the columns .
ex: select * except (column_name1,column_name_2) from Table_name.
Today I’m trying to make a “table” from a column. The information I’m using looks like:
AAA-B-CCC|DDD-E-FFF|GGG-H-III|JJJ - K
I need my table have these columns:
Column1 Column2 Column3 AAA B CCC DDD E FFF GGG H III JJJ K
So I began to divide the string into smaller pieces:
SELECT LEVEL reg, REGEXP_SUBSTR('AAA-B-CCC|DDD-E-FFF|GGG-H-III|JJJ-K','[^|]+', 1, LEVEL) ferroc FROM DUAL CONNECT BY LEVEL <= LENGTH('AAA-B-CCC|DDD-E-FFF|GGG-H-III|JJJ-K') - LENGTH(REPLACE('AAA-B-CCC|DDD-E-FFF|GGG-H-III|JJJ–K','|')) + 1; What I get is: >
Explain plan for <SQL_STATEMENT>" and ranselect plan_table_output from table(dbms_xplan.display()) afterward.
There's an object "vm_nwvm_1" under the column "name" and I have no ideas where this objects come from. I query the table user_objects and look for the name and I don't see it. Before the I did dbms_stat command on the schema. My performance was very reason able and I didn't see the object "vm_nwvm_1" under the explain plan. I only see it after "dbms_stat".