1500字范文,内容丰富有趣,写作好帮手!
1500字范文 > mysql中复合主键指什么作用_mysql 为何要设置复合主键

mysql中复合主键指什么作用_mysql 为何要设置复合主键

时间:2021-04-28 01:15:56

相关推荐

mysql中复合主键指什么作用_mysql 为何要设置复合主键

Oracle

不直接支持 自动递增的列。

需要创建一个序列 SEQUENCE。

又由于无法在列的默认值那里,设置默认值为序列。因此只能通过触发器来设置。

设置好触发器以后,所有的插入语句,将忽略外部传入的 id 数据,只使用指定的序列号来产生。

SQL> CREATE SEQUENCE test_sequence2

2 increment by 1 -- 每次递增1

3 start with 1 -- 从1开始

4 nomaxvalue -- 没有最大值

5 minvalue 1 -- 最小值=1

6 NOCYCLE; -- 不循环

Sequence created.

SQL> CREATE TABLE test_create_tab2 (

2 id INT DEFAULT test_sequence2.NEXTVAL,

3 val VARCHAR(10),

4 PRIMARY KEY (id)

5 );

id INT DEFAULT test_sequence2.NEXTVAL,

*

ERROR at line 2:

ORA-00984: column not allowed here

SQL> CREATE TABLE test_create_tab2 (

2 id INT,

3 val VARCHAR(10),

4 PRIMARY KEY (id)

5 );

Table created.

SQL> CREATE OR REPLACE TRIGGER BeforeTestCreate2Insert

2 BEFORE INSERT ON test_create_tab2

3 FOR EACH ROW

4 BEGIN

5 SELECT test_sequence2.nextval INTO :new.id FROM dual;

6 END;

7 /

Trigger created.

SQL> INSERT INTO test_create_tab2(val) VALUES ('NO id');

1 row created.

SQL> INSERT INTO test_create_tab2(id, val) VALUES (1, 'id no use');

1 row created.

SQL> SELECT * FROM test_create_tab2;

ID VAL

---------- --------------------

1 NO id

2 id no use

取消

评论

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。