PostgreSQL/Oracle Table
通常我們在建立 PostgreSQL/Oracle 資料庫的時候, 如果要使用 MySQL/MS-SQL identity 雷同的功能, 就是要採用 Sequence 來建立, 而為了每一個 Table 都有獨立的序號產生器, 我們會建立個別的 sequence.
例如 (PostgreSQL sample):
CREATE SEQUENCE "student_seq" start 1 increment 1 maxvalue 2147483647 minvalue 1 cache 1;
create table student (
id bigint PRIMARY KEY DEFAULT NEXTVAL('student_seq'),
name character varying(50),
studentno character varying(50)
)
當我們使用基本的 SQL command 就是
Insert into student ( name, studentno ) values ( 'jini', '890099' )
進行 Insert 的動作, 他自然會幫我取得 nextval of student_seq 進行 Insert.
那麼, 在 Hibernate annotation 標準的作法, 就是
@Entity
@SequenceGeneratorr(name = "TheSEQ", allocationSize = 1, initialValue = 0, sequenceName = "student_seq")
public class Student implements Serializable {
@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE
, generator = "TheSEQ")
private Long id;
// other attributes, getters and setters
}
這樣, 我每一個 @Id 都得花時間寫指定的 sequence name,
雖然沒有什麼不好, 但是我們可以利用 [tablename]_seq 的原則定義 seq, 就應該可以透過 Dialect 來決定我的 IdGenerator 的方式
所以我希望未來的程式碼只有以下所列, 利用 AUTO 而非 SEQUENCE generated type.
@Entity
public class Student implements Serializable {
@Id
@GeneratedValue(strategy=GenerationType.AUTO)
private
相关文档:
今天在戴明明同学的一个回帖里给了个关于Shrink命令的帖子,转过来学习学习~
=============================================================================================
从10g开始,oracle开始提供Shrink的命令,假如我们的表空间中支持自动段空间管理 (ASSM),就可以使用这个特性缩小段,即降低HWM。这里需要强调 ......
SELECT max(SYS_CONNECT_BY_PATH(COLUMN_NAME, ','))
from (SELECT A.COLUMN_NAME, ROWNUM AS ROWNO
from USER_TAB_COLUMNS A
WHERE TABLE_NAME = 'A_USER'
  ......
create user 用户名 identified by 密码 default tablespace 缺省表空间 Temporary tablespace 临时表空间;
grant connect,resource,dba to 用户名;
revoke unlimited tablespace from 用户名;
alter user 用户名 quota 0 on Users;
alter user 用户名 quot ......
本实例已完全通过测试,单向,又向同步都可使用.
--名词说明:源——被同步的数据库
目的——要同步到的数据库
前6步必须执行,第6以后是一些辅助信息.
--1、在目的数据库上,创建dblink
drop public database link dblink_or ......