一直都是用sql server作為開發數據庫,最近因為開發新的項目使用oracle數據庫,我才開始學習oracle.
學習了一段時間,發現SQL Server和Oracle還是有這很大的差別。首先,我在SQL Server中用得很順手的自增長字段就在ORACLE中找不到了,朋友說可以用序列可以實現,于是查閱資料,整理出如下示例:
方法一
1.建立測試數據表
CREATE TABLE TEST
(
?ID?NUMBER,
?NAME?VARCHAR2(20),
?PRIMARY KEY(ID)
);
2.創建序列
CREATE SEQUENCE SEQ_TEST;
3.創建觸發器
CREATE OR REPLACE TRIGGER AUTOINCREMENT
BEFORE INSERT ON TEST
FOR EACH ROW
WHEN (NEW.ID IS NULL)
BEGIN
SELECT SEQ_TEST.NEXTVAL INTO :NEW.ID FROM DUAL;
END;
/
4.插入數據
INSERT INTO TEST(NAME) VALUES('NAME1');
5.查看插入結果
SELECT * FROM TEST;
方法二
SQL ? Server,Sybase: ?
? 有個identity屬性可以讓系統自動增1 ?
? create ? table ? a ?
? ( ?
? a1 ? int ? identity(1,1), ?
? a2 ? varchar(6) ?
? )???
? 然后在insert時: ?
? insert ? into ? a ? values('hello!'); --不用管a1,系統會自動增1 ?
? ?
? Oracle: ?
? 使用SEQUENCE(序列)可以達到要求 ?
? create ? table ? a ?
? ( ?
? a1 ? int ? , ?
? a2 ? varchar2(6) ?
? ); ?
? ?
? create ? SEQUENCE ? seq_a ? ? INCREMENT ? BY ? 1;???
????
? 然后在insert時: ?
? insert ? into ? a ? values(seq_a.nextval,'hello!'); --seq_a.nextval是該序列的下個值
posted on 2006-11-20 00:39
Super·shen BLOG 閱讀(665)
評論(0) 編輯 收藏 所屬分類:
工作