国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發(fā)設計 > 正文

關于數據庫中的主鍵的自動增長

2019-11-08 20:54:31
字體:
來源:轉載
供稿:網友
              MySQL、SqlServer、Oracle主鍵自動增長的設置      1、把主鍵定義為自動增長標識符類型在mysql中,如果把表的主鍵設為auto_increment類型,數據庫就會自動為主鍵賦值。例如:create table customers(id int auto_increment PRimary key not null, name varchar(15));insert into customers(name) values("name1"),("name2");       2、在MS SQLServer中,如果把表的主鍵設為identity類型,數據庫就會自動為主鍵賦值。例如:create table customers(id int identity(1,1) primary key not null, name varchar(15));insert into customers(name) values("name1"),("name2");identity包含兩個參數,第一個參數表示起始值,第二個參數表示增量。       3、Oracle列中獲取自動增長的標識符在Oracle中,可以為每張表的主鍵創(chuàng)建一個單獨的序列,然后從這個序列中獲取自動增加的標識符,把它賦值給主鍵。例如一下語句創(chuàng)建了一個名為customer_id_seq的序列,這個序列的起始值為1,增量為2。方法一、    create sequence customer_id_seq      INCREMENT BY 1   -- 每次加幾個        START WITH 1     -- 從1開始計數        NOMAXVALUE       -- 不設置最大值        NOCYCLE          -- 一直累加,不循環(huán)        CACHE 10;一旦定義了customer_id_seq序列,就可以訪問序列的curval和nextval屬性。curval:返回序列的當前值nextval:先增加序列的值,然后返回序列值create table customers(id int primary key not null, name varchar(15));insert into customers values(customer_id_seq.curval, "name1"),(customer_id_seq.nextval, "name2");方法二、或者通過存儲過程和觸發(fā)器:    1、通過添加存儲過程生成序列及觸發(fā)器:create or replace PROCEDURE "PR_CREATEIDENTITYCOLUMN"(tablename varchar2,columnname varchar2)asstrsql varchar2(1000);beginstrsql := 'create sequence seq_'||tablename||' minvalue 1 maxvalue 999999999999999999 start with 1 increment by 1 nocache';execute immediate strsql;strsql := 'create or replace trigger trg_'||tablename||' before insert on '||tablename||' for each row begin select seq_'||tablename||'.nextval into :new.'||columnname||' from dual; end;';execute immediate strsql;end;2、 對表進行執(zhí)行存儲過程exec PR_CREATEIDENTITYColumn('XS_AUDIT_RECORD','AUDIT_RECORD_ID');   上一種方案對每一張表都要進行,下面根據用戶批量生成select a.table_name, b.column_name  from dba_constraints a, dba_cons_columns b where a.constraint_name = b.constraint_name and a.CONSTRAINT_TYPE = 'P' and a.owner=user; 3、添加執(zhí)行存儲過程的role權限,修改存儲過程,加入Authid Current_User時存儲過程可以使用role權限。 create or replace procedeate_ure p_crtable Authid Current_User isbeginExecute Immediate 'create table create_table(id int)';end p_create_table;
上一篇:Mysql中文亂碼

下一篇:Sql注入漏洞問題

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 苏尼特右旗| 田阳县| 八宿县| 华亭县| 五原县| 铜梁县| 阳信县| 钟祥市| 乌什县| 万荣县| 临高县| 四川省| 绥江县| 潮安县| 南岸区| 达日县| 夹江县| 宁乡县| 崇明县| 海原县| 志丹县| 会昌县| 古蔺县| 五台县| 鄂托克旗| 罗江县| 石渠县| 桃园县| 洞口县| 巫山县| 巨野县| 惠安县| 抚松县| 铅山县| 天长市| 阿荣旗| 昌平区| 页游| 大洼县| 上高县| 台安县|