ORACLE----id自增长(sql developer 手动操作方式)

之前都是mysql数据库,现在因为项目需要开始接触oracle数据库,新手上路,难免磕磕碰碰,把自己遇到的问题记录下来,方便查询!详细看:http://www.360doc.com/content/17/0407/11/41766228_643573414.shtml

一 建表脚本:


 
 
  1. DROP TABLE TEMP_TEST_TABLE;
  2. CREATE TABLE TEMP_TEST_TABLE
  3. (
  4. id NUMBER NOT NULL,
  5. author VARCHAR2(200),
  6. publishing VARCHAR2(200),
  7. publish_time TIMESTAMP(6),
  8. word_number VARCHAR2(15),
  9. which_edition VARCHAR2(15),
  10. total_page VARCHAR2(15),
  11. print_time TIMESTAMP(6),
  12. print_number VARCHAR2(15),
  13. isbn VARCHAR2(25),
  14. author_summary VARCHAR2(250),
  15. catalogue VARCHAR2(250)
  16. )
  17. --指定表空间(可以不指定)
  18. tablespace DSW
  19. pctfree 10
  20. pctused 40
  21. initrans 1
  22. maxtrans 255
  23. storage
  24. (
  25. initial 64K
  26. minextents 1
  27. maxextents unlimited
  28. );
  29. -- Add comments to the table
  30. comment on table TEMP_TEST_TABLE is '学习测试表';
  31. -- Add comments to the columns
  32. comment on column TEMP_TEST_TABLE.id is '图书ID';
  33. comment on column TEMP_TEST_TABLE.author is '图书作者';
  34. comment on column TEMP_TEST_TABLE.publishing is '出版社';
  35. comment on column TEMP_TEST_TABLE.publish_time is '出版时间';
  36. comment on column TEMP_TEST_TABLE.word_number is '字数';
  37. comment on column TEMP_TEST_TABLE.which_edition is '版本号码';
  38. comment on column TEMP_TEST_TABLE.total_page is '总页数';
  39. comment on column TEMP_TEST_TABLE.print_time is '印刷时间';
  40. comment on column TEMP_TEST_TABLE.print_number is '印刷次数';
  41. comment on column TEMP_TEST_TABLE.isbn is '版本号';
  42. comment on column TEMP_TEST_TABLE.author_summary is '作者简介';
  43. comment on column TEMP_TEST_TABLE.catalogue is '图书描述';
  44. -- Create/Recreate primary, unique and foreign key constraints
  45. alter table TEMP_TEST_TABLE
  46. add constraint PK_TEMP_TEST_TABLE primary key (ID)
  47. using index
  48. tablespace SYSTEM
  49. pctfree 10
  50. initrans 2
  51. maxtrans 255
  52. storage
  53. (
  54. initial 64K
  55. minextents 1
  56. maxextents unlimited
  57. );
结果项目成功启动后,调用接口时,接口逻辑没有问题,作新增操作的时候,一直在报错;

信息如下:


 
 
  1. 2015-06-05 10:32:43,996 DEBUG [org.springframework.jdbc.support.SQLErrorCodeSQLExceptionTranslator] - Translating SQLException with SQL state '23000', error code '1400', message [ORA-01400: 无法将 NULL 插入 ("SL"."TEMP_TEST_TABLE"."ID")
  2. ]; SQL was [] for task [
  3. ### Error updating database. Cause: java.sql.SQLException: ORA-01400: 无法将 NULL 插入 ("SL"."TEMP_TEST_TABLE"."ID")
  4. ### The error may involve defaultParameterMap
  5. ### The error occurred while setting parameters
  6. ### Cause: java.sql.SQLException: ORA-01400: 无法将 NULL 插入 ("SL"."TEMP_TEST_TABLE"."ID")
  7. ]
  8. 2015-06-05 10:32:43,996 DEBUG [org.mybatis.spring.SqlSessionUtils] - Closing no transactional SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@55450411]
  9. 2015-06-05 10:32:43,996 DEBUG [org.springframework.jdbc.datasource.DataSourceUtils] - Returning JDBC Connection to DataSource
  10. org.springframework.dao.DataIntegrityViolationException:
  11. ### Error updating database. Cause: java.sql.SQLException: ORA-01400: 无法将 NULL 插入 ("SL"."TEMP_TEST_TABLE"."ID")
  12. ### The error may involve defaultParameterMap
  13. ### The error occurred while setting parameters
  14. ### Cause: java.sql.SQLException: ORA-01400: 无法将 NULL 插入 ("SL"."TEMP_TEST_TABLE"."ID")
  15. ; SQL []; ORA-01400: 无法将 NULL 插入 ("SL"."TEMP_TEST_TABLE"."ID")
  16. ; nested exception is java.sql.SQLException: ORA-01400: 无法将 NULL 插入 ("SL"."TEMP_TEST_TABLE"."ID")
  17. at org.springframework.jdbc.support.SQLErrorCodeSQLExceptionTranslator.doTranslate(SQLErrorCodeSQLExceptionTranslator.java:249)
  18. at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:72)
  19. at org.mybatis.spring.MyBatisExceptionTranslator.translateExceptionIfPossible(MyBatisExceptionTranslator.java:71)
  20. at org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:346)
  21. at com.sun.proxy.$Proxy8.insert(Unknown Source)
  22. at org.mybatis.spring.SqlSessionTemplate.insert(SqlSessionTemplate.java:231)
  23. at org.apache.ibatis.binding.MapperMethod.execute(MapperMethod.java:59)
  24. at org.apache.ibatis.binding.MapperProxy.invoke(MapperProxy.java:38)
  25. at com.sun.proxy.$Proxy36.insertTempTestTable(Unknown Source)
  26. at xyx.dsw.business.admin.quotationwish.TempTestTableInfo.onAdd(TempTestTableInfo.java:284)
  27. at xyx.dsw.business.base.BaseBusiness.add(BaseBusiness.java:67)
  28. at cn.xyx.dsw.admin.quotationwish.controller.TempTestTableController.saveJson(TempTestTableController.java:140)
  29. at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
  30. at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
  31. at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
  32. at java.lang.reflect.Method.invoke(Method.java:606)
  33. at org.springframework.web.method.support.InvocableHandlerMethod.invoke(InvocableHandlerMethod.java:219)
  34. at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:132)
  35. at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:104)
  36. at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandleMethod(RequestMappingHandlerAdapter.java:745)
  37. at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:686)
  38. at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:80)
  39. at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:925)
  40. at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:856)
  41. at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:936)
  42. at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:838)
  43. at javax.servlet.http.HttpServlet.service(HttpServlet.java:727)
  44. at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:812)
  45. at javax.servlet.http.HttpServlet.service(HttpServlet.java:820)
  46. at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:511)
  47. at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1166)
  48. at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:88)
  49. at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
  50. at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157)
  51. at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:388)
  52. at org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216)
  53. at org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:182)
  54. at org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:765)
  55. at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:418)
  56. at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152)
  57. at org.mortbay.jetty.Server.handle(Server.java:326)
  58. at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:542)
  59. at org.mortbay.jetty.HttpConnection$RequestHandler.content(HttpConnection.java:938)
  60. at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:755)
  61. at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:218)
  62. at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:404)
  63. at org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:409)
  64. at org.mortbay.thread.QueuedThreadPool$PoolThread.run(QueuedThreadPool.java:582)
  65. Caused by: java.sql.SQLException: ORA-01400: 无法将 NULL 插入 ("SL"."TEMP_TEST_TABLE"."ID")
  66. at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:112)
  67. at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:331)
  68. at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:288)
  69. at oracle.jdbc.driver.T4C8Oall.receive(T4C8Oall.java:745)
  70. at oracle.jdbc.driver.T4CPreparedStatement.doOall8(T4CPreparedStatement.java:216)
  71. at oracle.jdbc.driver.T4CPreparedStatement.executeForRows(T4CPreparedStatement.java:966)
  72. at oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:1170)
  73. at oracle.jdbc.driver.OraclePreparedStatement.executeInternal(OraclePreparedStatement.java:3339)
  74. at oracle.jdbc.driver.OraclePreparedStatement.execute(OraclePreparedStatement.java:3445)
  75. at com.alibaba.druid.filter.FilterChainImpl.preparedStatement_execute(FilterChainImpl.java:2929)
  76. at com.alibaba.druid.filter.FilterEventAdapter.preparedStatement_execute(FilterEventAdapter.java:440)
  77. at com.alibaba.druid.filter.FilterChainImpl.preparedStatement_execute(FilterChainImpl.java:2927)
  78. at com.alibaba.druid.proxy.jdbc.PreparedStatementProxyImpl.execute(PreparedStatementProxyImpl.java:94)
  79. at com.alibaba.druid.pool.DruidPooledPreparedStatement.execute(DruidPooledPreparedStatement.java:476)
  80. at sun.reflect.GeneratedMethodAccessor14.invoke(Unknown Source)
  81. at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
  82. at java.lang.reflect.Method.invoke(Method.java:606)
  83. at org.apache.ibatis.logging.jdbc.PreparedStatementLogger.invoke(PreparedStatementLogger.java:45)
  84. at com.sun.proxy.$Proxy20.execute(Unknown Source)
  85. at org.apache.ibatis.executor.statement.PreparedStatementHandler.update(PreparedStatementHandler.java:22)
  86. at org.apache.ibatis.executor.statement.RoutingStatementHandler.update(RoutingStatementHandler.java:51)
  87. at org.apache.ibatis.executor.ReuseExecutor.doUpdate(ReuseExecutor.java:32)
  88. at org.apache.ibatis.executor.BaseExecutor.update(BaseExecutor.java:88)
  89. at org.apache.ibatis.executor.CachingExecutor.update(CachingExecutor.java:43)
  90. at org.apache.ibatis.session.defaults.DefaultSqlSession.update(DefaultSqlSession.java:121)
  91. at org.apache.ibatis.session.defaults.DefaultSqlSession.insert(DefaultSqlSession.java:110)
  92. at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
  93. at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
  94. at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
  95. at java.lang.reflect.Method.invoke(Method.java:606)
  96. at org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:338)
  97. ... 44 more
  98. 2015-06-05 10:32:43,997 ERROR [cn.xyx.dsw.admin.quotationwish.controller.TempTestTableController] - add save
  99. org.springframework.dao.DataIntegrityViolationException:
  100. ### Error updating database. Cause: java.sql.SQLException: ORA-01400: 无法将 NULL 插入 ("SL"."TEMP_TEST_TABLE"."ID")
  101. ### The error may involve defaultParameterMap
  102. ### The error occurred while setting parameters
  103. ### Cause: java.sql.SQLException: ORA-01400: 无法将 NULL 插入 ("SL"."TEMP_TEST_TABLE"."ID")
  104. ; SQL []; ORA-01400: 无法将 NULL 插入 ("SL"."TEMP_TEST_TABLE"."ID")
  105. ; nested exception is java.sql.SQLException: ORA-01400: 无法将 NULL 插入 ("SL"."TEMP_TEST_TABLE"."ID")
  106. at org.springframework.jdbc.support.SQLErrorCodeSQLExceptionTranslator.doTranslate(SQLErrorCodeSQLExceptionTranslator.java:249)
  107. at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:72)
  108. at org.mybatis.spring.MyBatisExceptionTranslator.translateExceptionIfPossible(MyBatisExceptionTranslator.java:71)
  109. at org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:346)
  110. at com.sun.proxy.$Proxy8.insert(Unknown Source)
  111. at org.mybatis.spring.SqlSessionTemplate.insert(SqlSessionTemplate.java:231)
  112. at org.apache.ibatis.binding.MapperMethod.execute(MapperMethod.java:59)
  113. at org.apache.ibatis.binding.MapperProxy.invoke(MapperProxy.java:38)
  114. at com.sun.proxy.$Proxy36.insertTempTestTable(Unknown Source)
  115. at xyx.dsw.business.admin.quotationwish.TempTestTableInfo.onAdd(TempTestTableInfo.java:284)
  116. at xyx.dsw.business.base.BaseBusiness.add(BaseBusiness.java:67)
  117. at cn.xyx.dsw.admin.quotationwish.controller.TempTestTableController.saveJson(TempTestTableController.java:140)
  118. at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
  119. at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
  120. at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
  121. at java.lang.reflect.Method.invoke(Method.java:606)
  122. at org.springframework.web.method.support.InvocableHandlerMethod.invoke(InvocableHandlerMethod.java:219)
  123. at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:132)
  124. at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:104)
  125. at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandleMethod(RequestMappingHandlerAdapter.java:745)
  126. at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:686)
  127. at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:80)
  128. at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:925)
  129. at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:856)
  130. at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:936)
  131. at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:838)
  132. at javax.servlet.http.HttpServlet.service(HttpServlet.java:727)
  133. at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:812)
  134. at javax.servlet.http.HttpServlet.service(HttpServlet.java:820)
  135. at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:511)
  136. at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1166)
  137. at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:88)
  138. at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
  139. at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157)
  140. at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:388)
  141. at org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216)
  142. at org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:182)
  143. at org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:765)
  144. at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:418)
  145. at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152)
  146. at org.mortbay.jetty.Server.handle(Server.java:326)
  147. at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:542)
  148. at org.mortbay.jetty.HttpConnection$RequestHandler.content(HttpConnection.java:938)
  149. at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:755)
  150. at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:218)
  151. at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:404)
  152. at org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:409)
  153. at org.mortbay.thread.QueuedThreadPool$PoolThread.run(QueuedThreadPool.java:582)
  154. Caused by: java.sql.SQLException: ORA-01400: 无法将 NULL 插入 ("SL"."TEMP_TEST_TABLE"."ID")
  155. at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:112)
  156. at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:331)
  157. at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:288)
  158. at oracle.jdbc.driver.T4C8Oall.receive(T4C8Oall.java:745)
  159. at oracle.jdbc.driver.T4CPreparedStatement.doOall8(T4CPreparedStatement.java:216)
  160. at oracle.jdbc.driver.T4CPreparedStatement.executeForRows(T4CPreparedStatement.java:966)
  161. at oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:1170)
  162. at oracle.jdbc.driver.OraclePreparedStatement.executeInternal(OraclePreparedStatement.java:3339)
  163. at oracle.jdbc.driver.OraclePreparedStatement.execute(OraclePreparedStatement.java:3445)
  164. at com.alibaba.druid.filter.FilterChainImpl.preparedStatement_execute(FilterChainImpl.java:2929)
  165. at com.alibaba.druid.filter.FilterEventAdapter.preparedStatement_execute(FilterEventAdapter.java:440)
  166. at com.alibaba.druid.filter.FilterChainImpl.preparedStatement_execute(FilterChainImpl.java:2927)
  167. at com.alibaba.druid.proxy.jdbc.PreparedStatementProxyImpl.execute(PreparedStatementProxyImpl.java:94)
  168. at com.alibaba.druid.pool.DruidPooledPreparedStatement.execute(DruidPooledPreparedStatement.java:476)
  169. at sun.reflect.GeneratedMethodAccessor14.invoke(Unknown Source)
  170. at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
  171. at java.lang.reflect.Method.invoke(Method.java:606)
  172. at org.apache.ibatis.logging.jdbc.PreparedStatementLogger.invoke(PreparedStatementLogger.java:45)
  173. at com.sun.proxy.$Proxy20.execute(Unknown Source)
  174. at org.apache.ibatis.executor.statement.PreparedStatementHandler.update(PreparedStatementHandler.java:22)
  175. at org.apache.ibatis.executor.statement.RoutingStatementHandler.update(RoutingStatementHandler.java:51)
  176. at org.apache.ibatis.executor.ReuseExecutor.doUpdate(ReuseExecutor.java:32)
  177. at org.apache.ibatis.executor.BaseExecutor.update(BaseExecutor.java:88)
  178. at org.apache.ibatis.executor.CachingExecutor.update(CachingExecutor.java:43)
  179. at org.apache.ibatis.session.defaults.DefaultSqlSession.update(DefaultSqlSession.java:121)
  180. at org.apache.ibatis.session.defaults.DefaultSqlSession.insert(DefaultSqlSession.java:110)
  181. at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
  182. at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
  183. at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
  184. at java.lang.reflect.Method.invoke(Method.java:606)
  185. at org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:338)
  186. ... 44 more

仔细检查了好几遍都没有问题,结果不是代码的问题;是oracle数据库中TEMP_TEST_TABLE表字段ID是自增的,没有创建序列和触发器的缘故;

因此为该表加上序列和触发器,即可

二 创建序列脚本:


 
 
  1. -- Create sequence
  2. create sequence TEMP_TEST_TABLE_SEQ
  3. minvalue 1 -- 最小值=1
  4. maxvalue 999999999999999999999999999 -- 指定最大值
  5. -- 或nomaxvalue -- 没有最大值
  6. -- NOCYCLE; -- 不循环
  7. start with 1 -- 从1开始
  8. increment by 1 -- 每次递增1
  9. cache 20;


在PLSQL Developer中创建:


三 创建触发器脚本:


 
 
  1. </pre> <pre name="code" class="html">--触发器
  2. create or replace trigger TEMP_TEST_TABLE_TRI
  3. before insert on TEMP_TEST_TABLE
  4. REFERENCING OLD AS "OLD" NEW AS "NEW" FOR EACH ROW
  5. begin
  6. SELECT TEMP_TEST_TABLE_SEQ.NEXTVAL INTO :NEW.ID FROM DUAL;
  7. end;


四 完整的oracle建表脚本:


 
 
  1. -- Create table
  2. DROP TABLE TEMP_TEST_TABLE;
  3. CREATE TABLE TEMP_TEST_TABLE
  4. (
  5. id NUMBER NOT NULL,
  6. author VARCHAR2(200),
  7. publishing VARCHAR2(200),
  8. publish_time TIMESTAMP(6),
  9. word_number VARCHAR2(15),
  10. which_edition VARCHAR2(15),
  11. total_page VARCHAR2(15),
  12. print_time TIMESTAMP(6),
  13. print_number VARCHAR2(15),
  14. isbn VARCHAR2(25),
  15. author_summary VARCHAR2(250),
  16. catalogue VARCHAR2(250)
  17. )
  18. --指定表空间(可以不指定)
  19. tablespace DSW
  20. pctfree 10
  21. pctused 40
  22. initrans 1
  23. maxtrans 255
  24. storage
  25. (
  26. initial 64K
  27. minextents 1
  28. maxextents unlimited
  29. );
  30. -- Add comments to the table
  31. comment on table TEMP_TEST_TABLE is '学习测试表';
  32. -- Add comments to the columns
  33. comment on column TEMP_TEST_TABLE.id is '图书ID';
  34. comment on column TEMP_TEST_TABLE.author is '图书作者';
  35. comment on column TEMP_TEST_TABLE.publishing is '出版社';
  36. comment on column TEMP_TEST_TABLE.publish_time is '出版时间';
  37. comment on column TEMP_TEST_TABLE.word_number is '字数';
  38. comment on column TEMP_TEST_TABLE.which_edition is '版本号码';
  39. comment on column TEMP_TEST_TABLE.total_page is '总页数';
  40. comment on column TEMP_TEST_TABLE.print_time is '印刷时间';
  41. comment on column TEMP_TEST_TABLE.print_number is '印刷次数';
  42. comment on column TEMP_TEST_TABLE.isbn is '版本号';
  43. comment on column TEMP_TEST_TABLE.author_summary is '作者简介';
  44. comment on column TEMP_TEST_TABLE.catalogue is '图书描述';
  45. -- Create/Recreate primary, unique and foreign key constraints
  46. alter table TEMP_TEST_TABLE
  47. add constraint PK_TEMP_TEST_TABLE primary key (ID)
  48. using index
  49. tablespace SYSTEM
  50. pctfree 10
  51. initrans 2
  52. maxtrans 255
  53. storage
  54. (
  55. initial 64K
  56. minextents 1
  57. maxextents unlimited
  58. );
  59. -- Create sequence
  60. create sequence TEMP_TEST_TABLE_SEQ
  61. minvalue 1 -- 最小值=1
  62. maxvalue 999999999999999999999999999 -- 指定最大值
  63. -- 或nomaxvalue -- 没有最大值
  64. -- NOCYCLE; -- 不循环
  65. start with 1 -- 从1开始
  66. increment by 1 -- 每次递增1
  67. cache 20;
  68. --触发器
  69. create or replace trigger TEMP_TEST_TABLE_TRI
  70. before insert on TEMP_TEST_TABLE
  71. REFERENCING OLD AS "OLD" NEW AS "NEW" FOR EACH ROW
  72. begin
  73. SELECT TEMP_TEST_TABLE_SEQ.NEXTVAL INTO :NEW.ID FROM DUAL;
  74. end;






  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值