1. 程式人生 > >Oracle 主鍵

Oracle 主鍵

呵呵,這個問題,是從其他資料庫轉過來的開發者最常見的問題。
1、關於主鍵:在建表時指定primary key字句即可:
create table test(
  id  number(6) primary key,
  name varchar2(30)
);
如果是對於已經建好的表,想增加主鍵約束,則類似語法:
alter table test add constraint pk_id primary key(id);  
其中add constraint 和 primary key是關鍵字,pk_id是主鍵名稱,自定義的額,只要不重複即可。

2、關於id自增功能,也很簡單,而且比較靈活。
(1)首先建立一個序列(就是每次查詢會自動
增加值
的絕不重複的物件,比如每次加1或每次加10)。語法: CREATE SEQUENCE 序列名 [INCREMENT BY n] --每次加幾 [START WITH n] --序列從幾開始 [{MAXVALUE/ MINVALUE n|NOMAXVALUE}] --最小值、最大值的限制 比如CREATE SEQUENCE s_test start with 1 increment by 1; --就是建立了額一個從1開始每次加1的序列。 訪問序列時,用 序列名稱.nextval的語法。 比如對於上表,如果想要id欄位實現自增。則在每次插入記錄時,使用下面類似的語法(前提是表和序列已經建好)。 insert into test values (s_test.nextval,'張三'); 當然,你也可以自動一些,對錶的插入操作,建立一個
觸發器
,每當有資料插入時,觸發器自動修改id值為序列的新值,這樣就完全實現自增id功能了。不過其實也沒有這個必要。因為觸發器如果建多了,有時會比較混亂,不易管理。 辛苦手碼了這麼多字,如果能幫到你,請及時採納最佳。

相關推薦

MySQL 和 Oracle 自增長

pos tom 速度 mage hone class 緩沖 開始 www 1、MySQL 1)建表 auto_increment:每插入一條數據,客戶表(customers)的主鍵id就自動增1,如下所示 1 create table customers --

建立一張Oracle自增和帶有預設值的資料表

0 在建立表前修改一下系統預設時間格式 alter session set nls_date_format = 'yyyy-mm-dd'; 1 建立一個表 CREATE TABLE user_record( ID NUMBER(11) NOT NULL PRIMA

oracle插入重複資料

問題 發現oracle中已經設定了主鍵,但是還能插入重複資料,也是奇葩,後來發現主鍵雖然設定,但是沒有啟動,這才導致可以插入重複主鍵資料 解決辦法 查詢出沒有啟用主鍵的表 select a.constraint_name,b.column_name,a.table_nam

Oracle自增

har bubuko tid varchar2 min new add info replace 1、創建table 1 CREATE TABLE demo6 2 ( 3 id INT NOT NULL, 4 key1 VARCHAR2(40)

實現oracle自加

有一個表aline,主鍵為objectid create sequence SEQ_Userinf start with 1 increment by 1 nomaxvalue nominvalue nocache; CREATE OR REPLACE TRIGGER tg_test BEF

ORACLE:索引更換表空間

        在 Oracle 中,對於已經建好的主鍵,是自動建立索引的,並且索引是建立到當前的表空間中的,如果要將索引更換到其它表空間,可以使用如下的方法,超簡單:    alter index index_aaa rebuild tablespace newtabl

Oracle

呵呵,這個問題,是從其他資料庫轉過來的開發者最常見的問題。 1、關於主鍵:在建表時指定primary key字句即可: create table test( id number(6) primary key, name varchar2(30) ); 如果是對於已

hibernate oracle自增長中sequence跳號無序的問題

1. 配置序列產生器相關屬性 hibernate註解設定資料庫主鍵自增長時,如果oracle表中的主鍵ID沒有按照正常的sequence自增長(+1)存入資料庫。可以在序列產生器中加上allocationSize(步長)屬性的設定,即:在@SequenceGenerator

Oracle約束的建立,新增和刪除

Oracle主鍵約束的建立,新增和刪除  2010-06-27 10:40:16|  分類: |  標籤:|字號大中小 訂閱 oracle的主鍵約束新增刪除 1、建立表的同時建立主鍵約束 一、無命名 create table accounts ( accounts_num

oracle的自動生成

oracle資料庫中不能設定主鍵自增,通過“序列sequence+觸發器trigger”實現主鍵自增 1. 建立序列 create sequence CHML_SEQUENCE --建立序列

Oracle-約束、唯一約束與外來約束

          1.主鍵約束: 一個表只能有一個主鍵約束。主鍵可以是單個欄位,也可以是多個欄位。無論是哪種情況,其所有欄位都是NOT NULL。           2.Unique約束:一個表可以有多個Unique約束,Unique的欄位可以為NULL。        

oracle自增 建立多個觸發器

問題: 最近修改專案的sql指令碼,新增幾張表,其中三個表需要屬性自增,mySql中可以直接用AUTO_INCREMENT,oracle沒有做自增功能,需要手動寫觸發器實現自增功能。在網上找到了解決方案。貼出來供大家參考: 解決方案:1.首先建立表 CREATE TABL

Mysql,SqlServer,Oracle自動增長的設定

1、把主鍵定義為自動增長識別符號型別 MySql 在mysql中,如果把表的主鍵設為auto_increment型別,資料庫就會自動為主鍵賦值。例如: create table customers(id int auto_increment primary key not

oracle 刪除,聯合的建立

1,主鍵的刪除  ALTER TABLE TABLENAME DROP PRIMARY_KEY 執行上面的SQL可以刪除主鍵;如果不成功可以用 ALTER TABLE TABLENAME DROP CONSTRAINTS COLUMN CASCADE; --刪除約束 AL

Oracle創建聯合

bsp font acl con pan span tex size 主鍵 先創建個表: 1)create table test ( sno char(12), name char(4), CONSTRAINT PK_TAB PRIMARY KEY (sno,

oracle數據庫建立序列、使用序列實現自增

ram name mage -- 不支持 nbsp 主鍵自增 property tar 2.建立序列 -- Create sequence create sequence SEQ_SHIP_IMAGEminvalue 20maxvalue 99999999999999999

oracle sql 創建表格 oracle建表設置自增

最大 font not 創建表 order sdn start var ace 1.新建table CREATE TABLE ysb_log( id number(8) primary key not null , tbdate varchar(50

Oracle查詢表、外

efault oracle查詢 sele blog tls const color log 信息 項目中用到的一些Sql(oracle下的)總結:1、查找表的所有索引(包括索引名,類型,構成列) 1 select t.*,i.index_type from user_in

oracle數據庫表實現自增功能

back oracle數據 max 序列 val create 主鍵 new row 有關oracle中自增序列sequence+觸發器trigger:實現數據表TABDATA_LIVE_CYCLE中的主鍵id的自增。 CREATE SEQUENCE TABDATA_LIV

Oracle 在函數或存儲過程中執行一條插入語句並返回ID值

num c# 如果 acl get col oracle style 建表語句 有時,我們需要往一張表插入一條記錄,同時返回主鍵ID值。 假定主鍵ID的值都是通過對應表的SEQUENCE來獲得,然後進行ID賦值 這裏有幾種情況需要註意: 1)如果建表語句含有主鍵ID的觸發器