DB2
CREATE TABLE T1
(
id INTEGER NOT NULL GENERATEDALWAYS AS IDENTITY (START WITH 1 INCREMENT BY 1 MINVALUE 1 NOMAXVALUENOCYCLENOCACHE ORDER ),
...
);
Oracle(需要创建一个SEQUENCE和一个TRIGGER):
CREATETABLET1
(
idNUMBER(10,0)NOTNULL,
...
);
CREATESEQUENCET1_ID_SEQINCREMENTBY1STARTWITH1NOMAXVALUENOCYCLECACHE100ORDER;
CREATEORREPLACETRIGGERINSERT_T1_ID
BEFOREINSERTONT1
REFERENCINGNEWASnewOLDASold
FOREACHROW
BEGIN
SELECTT1_ID_SEQ.NEXTVALINTO:new.idFROMDUAL;
END;
/
MySQL
CREATETABLET1
(
idINTNOTNULLAUTO_INCREMENT,
...
);
PostgreSQL
CREATETABLET1
(
idSERIALNOTNULL,
...
);
SQL Server
CREATETABLET1
(
idINTNOTNULLIDENTITY,
...
);
Sybase
CREATETABLET1
(
idINTNOTNULLIDENTITY,
...
);
CREATE TABLE T1
(
id INTEGER NOT NULL GENERATEDALWAYS AS IDENTITY (START WITH 1 INCREMENT BY 1 MINVALUE 1 NOMAXVALUENOCYCLENOCACHE ORDER ),
...
); Oracle(需要创建一个SEQUENCE和一个TRIGGER):
CREATETABLET1
(
idNUMBER(10,0)NOTNULL,
...
);
CREATESEQUENCET1_ID_SEQINCREMENTBY1STARTWITH1NOMAXVALUENOCYCLECACHE100ORDER;
CREATEORREPLACETRIGGERINSERT_T1_ID
BEFOREINSERTONT1
REFERENCINGNEWASnewOLDASold
FOREACHROW
BEGIN
SELECTT1_ID_SEQ.NEXTVALINTO:new.idFROMDUAL;
END;
/
MySQL
CREATETABLET1
(
idINTNOTNULLAUTO_INCREMENT,
...
);
PostgreSQL
CREATETABLET1
(
idSERIALNOTNULL,
...
);
SQL Server
CREATETABLET1
(
idINTNOTNULLIDENTITY,
...
);
Sybase
CREATETABLET1
(
idINTNOTNULLIDENTITY,
...
);
本文介绍了在多种主流数据库中如何创建带有自增ID的表,包括DB2、Oracle、MySQL、PostgreSQL、SQL Server和Sybase等。每种数据库实现自增ID的方式不同,如MySQL使用AUTO_INCREMENT,而Oracle则需要创建SEQUENCE并通过TRIGGER触发。
6268

被折叠的 条评论
为什么被折叠?



