テーブルのプライマリキーを自動的にインクリメントするシーケンスとトリガを作成する必要がありますが、どのように行うのか分かりません。Oracleの自動インクリメント
答えて
テーブルとシーケンス今
SQL> create table staff (
2 emp_id number primary key,
3 staff_name varchar2(100)
4 );
Table created.
SQL> create sequence emp_id_seq;
Sequence created.
を作成して、あなたは、あなたがデータを挿入すると、今
SQL> create trigger trg_emp_id
2 before insert on staff
3 for each row
4 begin
5 select emp_id_seq.nextval
6 into :new.emp_id
7 from dual;
8 end;
9/
Trigger created.
主キーを移入するためのシーケンスを使用してトリガーを作成することができますEMP_ID
列を指定する必要はありません。トリガーによって自動的に入力されます。
SQL> insert into staff(staff_name) values ('Justin');
1 row created.
SQL> select * from staff;
EMP_ID STAFF_NAME
---------- --------------------
1 Justin
この記事を読む、美しい記事。 emp_sequence
は、我々は上記で作成したシーケンスの名前で、nextval
を割り当てるために使用されている機能ですemp_sequence.nextval
で
どのシーケンス[auto increment in oracle]
構文
Create sequence sequence_name
start with value
increment by value
minvalue value
maxvalue value;
例
SQL> create table emp (
emp_id number(10),
fname varchar2(25),
lname varchar2(25),
constraint pk_emp_id PRIMARY KEY(emp_id)
);
SQL> Create sequence emp_sequence
start with 1
increment by 1
minvalue 1
maxvalue 10000;
SQL> insert into emp (emp_id,fname,lname) values(emp_sequence.nextval,'Darvin','Johnson');
SQL> insert into emp (emp_id,fname,lname) values(emp_sequence.nextval,'Mig','Andrews');
SQL> insert into emp (emp_id,fname,lname) values(emp_sequence.nextval,'Alex','Martin');
SQL> insert into emp (emp_id,fname,lname) values(emp_sequence.nextval,'Jon','paul');
SQL> insert into emp (emp_id,fname,lname) values(emp_sequence.nextval,'Yatin','Bones');
next number from emp_sequence to emp_id
empテーブルの列。
SQL> select * from emp;
EMP_ID FNAME LNAME
---------- ------------------------- -------------------------
1 Darvin Johnson
2 Mig Andrews
3 Alex Martin
4 Jon paul
5 Yatin Bones
自動インクリメントが必要なすべてのテーブルで同じシーケンスを使用できますか。どの部分もトリガーですか? –
好奇心から、それをなぜ2度読むのですか? –
非常によく説明されています、ありがとうございます。 –
はこれを試してみてください:
create sequence seq_EmpID start with 1 increment by 1
insert into Emp_Table values(seq_EmpID.nextval,'Ram')
甘くてシンプルで、あなたもありがとう –
非常に良い質問を! おそらくシーケンスは、このように使用することができます - また、私は実際に差があるかどうかわからないです:
CREATE SEQUENCE emp_id_seq MINVALUE 1 START WITH 1 INCREMENT BY 1 CACHE 10;
これは別の答えとほとんど同じです。 –
シーケンスの値が矛盾の例であるので、あなたは、いくつかのテーブルの列を使用する場合: 我々は2つのテーブルempとdepeartementを持っています: 私はempでシーケンスを使用する場合:5はすでに他のテーブルで使用されているので、ID_dept = 6。
例:
SQL> insert into emp values(masequence.nextval,'aaa');
1 LIGNEのcrÚÚe。
SQL> insert into departement values(masequence.nextval,'aaa');
1リグルチレ。
SQL> select * from emp;
ID_EMP NOM_EMP
---------- -------------------------
5 aaa
SQL> select * from departement;
ID_DEPT NOM_DEPT
---------- ----------
6 aaa
SQL>
- 1. のOracle自動インクリメント
- 2. Oracleの非プライマリキー列の自動インクリメント
- 3. mysql自動インクリメントなしインクリメント
- 4. 自動インクリメントHexValue
- 5. モンゴース自動インクリメント
- 6. 自動インクリメントC#
- 7. 自動インクリメント
- 8. 自動インクリメント
- 9. リセット自動インクリメント
- 10. Java自動インクリメント
- 11. jQueryの自動インクリメント(」「)
- 12. 自動インクリメントIDの
- 13. ペーストの自動インクリメント
- 14. FTLの自動インクリメント
- 15. SharedPreferencesの自動インクリメント?
- 16. シーケンスおよびトリガーの問題を伴うOracle自動インクリメント
- 17. jdbcを使用してOracleの列を自動インクリメントする
- 18. hibernateでoracle自動インクリメント・トリガーを使用する
- 19. Oracle 11gで自動インクリメントしようとしています
- 20. C#が自動インクリメント
- 21. 自動インクリメント問題
- 22. MongoEngineで自動インクリメント
- 23. Django自動インクリメント値
- 24. JsGrid - 自動インクリメントID
- 25. LINQと自動インクリメント
- 26. キー列自動インクリメント
- 27. 自動インクリメントby information_schema
- 28. Heroku MySQL自動インクリメント
- 29. 自動インクリメント番号
- 30. 自動インクリメントSQL値
こんにちは、シーケンスは、異なるテーブルのために使用することができますか? –
@JoseDavidGarciaLlanos - はい、できます。従来は、各テーブルごとに別々のシーケンスを作成していました。これは、たとえば、異なるテーブルに挿入を行うセッション間の競合を減らします。 –
ガイダンスとトリガーコードをお寄せいただきありがとうございます。 –