91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Oracle系列:(24)序列

發布時間:2020-08-02 11:51:07 來源:網絡 閱讀:479 作者:lsieun 欄目:數據庫


什么是序列【Sequence】

(1)類似于MySQL中的auto_increment自動增長機制,但Oracle中無auto_increment機制

(2)是oracle提供的一個產生唯一數值型值的機制

(3)通常用于表的主健值

(4)序列只能保證唯一,不能保證連續

     聲明:oracle中,只有rownum永遠保持從1開始,且繼續

(5)序列值,可放于內存,取之較快

 

題問:為什么oracle不直接用rownum做主健呢?

rownum=1這條記錄不能永遠唯一表示SMITH這個用戶

但主鍵=1確可以永遠唯一表示SMITH這個用戶


主鍵的目的就是為了唯一地標識一條記錄,而rownum無法實現唯一標識某一條記錄。



為什么要用序列

(1)以前我們為主健設置值,需要人工設置值,容易出錯

(2)以前每張表的主健值,是獨立的,不能共享


為emp表的empno字段,創建序列emp_empno_seq,

create sequence 序列名
create sequence emp_empno_seq;


刪除序列emp_empno_seq,drop sequence 序列名

drop sequence emp_empno_seq;


查詢emp_empno_seq序列的當前值currval和下一個值nextval,第一次使用序列時,必須選用:序列名.nextval

select emp_empno_seq.nextval from dual;
select emp_empno_seq.currval from dual;

Oracle系列:(24)序列


使用序列,向emp表插入記錄,empno字段使用序列值

insert into emp(empno) values(emp_empno_seq.nextval);
insert into emp(empno) values(emp_empno_seq.nextval);
insert into emp(empno) values(emp_empno_seq.nextval);

Oracle系列:(24)序列


修改emp_empno_seq序列的increment by屬性為20,默認start with是1,alter sequence 序列名

alter sequence emp_empno_seq
increment by 20;

Oracle系列:(24)序列


修改修改emp_empno_seq序列的的increment by屬性為5

alter sequence emp_empno_seq
increment by 5;


修改emp_empno_seq序列的start with屬性,行嗎

alter sequence emp_empno_seq
start with 100;

不行,會報錯

Oracle系列:(24)序列

但是可以在創建序列的時候 ,指定起始值和增長值

Oracle系列:(24)序列



有了序列后,還能為主健手工設置值嗎?

insert into emp(empno) values(9999);
insert into emp(empno) values(7900);

可以

Oracle系列:(24)序列


(講課內容)

刪除表,會影響序列嗎?

你無法做insert操作


刪除序列,會影響表嗎?

表真正亡,序列亡

【存疑:我做了試驗,徹底刪除emp表之后,還能繼續使用emp_empno_seq的nextval和currval】




在hibernate中,如果是訪問oracle數據庫服務器,那么User.hbm.xml映射文件中關于<id>標簽如何配置呢?

<id name="id" column="id">
   <generator class="increment/identity/uuid/【sequence】/【native】"/>
</id>


(1)是否需要底層數據庫支持

identity需要底層數據庫支持auto_increment。在MySQL數據庫中,需要設置表的主鍵字段為自增長。

而increment和uuid不需要底層數據庫支持、不需要設置主鍵字段為自增長。

(2)是否支持多線程并發操作?

increment只能單線程訪問,多線程不行。

identity和uuid都支持并發操作。

(3)適用場景

如果只使用(專用)oracle數據庫,可以使用sequence,Hibernate會自動在Oracle數據庫中創建一個序列。

如果不確定使用oracle、mysql、sqlserver,可以使用native,它是一個通用的變量。一般都會使用native。



Hibernate幫助文檔


Various additional generators

All generators implement the interface org.hibernate.id.IdentifierGenerator. This is a very simple interface. Some applications can choose to provide their own specialized implementations, however, Hibernate provides a range of built-in implementations. The shortcut names for the built-in generators are as follows:

  • increment

    generates identifiers of type longshort or int that are unique only when no other process is inserting data into the same table. Do not use in a cluster.

  • identity

    supports identity columns in DB2, MySQL, MS SQLServer, Sybase and HypersonicSQL. The returned identifier is of type long, short or int.

  • sequence

    uses a sequence in DB2, PostgreSQL, Oracle, SAP DB, McKoi or a generator in Interbase. The returned identifier is of type long, short or int

  • uuid

    Generates a 128-bit UUID based on a custom algorithm. The value generated is represented as a string of 32 hexidecimal digits. Users can also configure it to use a separator (config parameter "separator") which separates the hexidecimal digits into 8{sep}8{sep}4{sep}8{sep}4. 

  • uuid2

    Generates a IETF RFC 4122 compliant (variant 2) 128-bit UUID. The exact "version" (the RFC term) generated depends on the pluggable "generation strategy" used. Capable of generating values as java.util.UUIDjava.lang.String or as a byte array of length 16 (byte[16]). The "generation strategy" is defined by the interface org.hibernate.id.UUIDGenerationStrategy.

  • guid

    uses a database-generated GUID string on MS SQL Server and MySQL.

  • native

    selects identity,sequence or hilo depending upon the capabilities of the underlying database.

  • assigned

    lets the application assign an identifier to the object before save() is called. This is the default strategy if no <generator> element is specified.

  • foreign

    uses the identifier of another associated object. It is usually used in conjunction with a <one-to-one> primary key  association.






向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

会泽县| 理塘县| 林口县| 冷水江市| 洪雅县| 武邑县| 贺州市| 綦江县| 清徐县| 河北省| 鹰潭市| 苗栗县| 四子王旗| 安岳县| 梁河县| 碌曲县| 宝应县| 安陆市| 永顺县| 霍邱县| 交城县| 隆化县| 定西市| 彩票| 剑川县| 全州县| 河间市| 久治县| 勐海县| 静乐县| 独山县| 安达市| 禄丰县| 黑河市| 东莞市| 大城县| 东海县| 水富县| 泽普县| 石河子市| 获嘉县|