日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

表的插入、更新、删除、合并操作_2_插入含自增列的记录

發布時間:2024/9/27 编程问答 20 豆豆
生活随笔 收集整理的這篇文章主要介紹了 表的插入、更新、删除、合并操作_2_插入含自增列的记录 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

? ? ? ? ? ? ? ? ? ? ? ? ? ?插入含自增列的記錄

需求描述

需求:向dept表中插入部門編號為50,部門名稱為Production,部門位置為Shanghai的數據.

解決方法:這里通過INSERT INTO TableName VALUES (…),這里表dept的deptno字段定義的是自增.

注: 數據庫數據集SQL腳本詳見如下鏈接地址

員工表結構和數據初始化SQL腳本

SQL代碼

-- MySql: INSERT INTO dept VALUES (50,'Production','Shanghai');/* Mysql雖然在字段定義時約束了自增,但是在插入自增數據時依然可以顯示的插入,只要自增字段的值不和已有的數據重復即可.如果插入的重復的自增字段數據,則會有類似如下的報錯:Duplicate entry '50' for key 'PRIMARY' */-- SQL Server: INSERT INTO dept VALUES (50,'Production','Shanghai');/* 消息 8101,級別 16,狀態 1,第 2 行僅當使用了列列表并且 IDENTITY_INSERT 為 ON 時,才能為表'dept'中的標識列指定顯式值。問題原因:dept表的deptno字段設置了自增模式,而默認默認情況下對自增字段的插入是數據庫自己維護的,所以當用戶手動指定時則會拋出該異常.*/ create table dept(deptno int IDENTITY(1,1) NOT NULL,dname varchar(15),loc varchar(50),primary key(deptno));/* 解決該問題有3種辦法:1 修改表結構的定義,去掉表的自增屬性。不建議。 2 只插入除自增外的其他字段,讓數據庫自行維護自增字段。建議。 3 通過打開表的IDENTITY_INSERT開關,顯示插入指定的自增字段。建議. 其中第三種方法的實現代碼見下: */SET IDENTITY_INSERT dept ON; GO INSERT INTO dept(deptno,dname,loc) VALUES (50,'Production','Shanghai'); SET IDENTITY_INSERT dept OFF; GO-- Oracle:/* Oracle里對于自增字段的維護麻煩點,因為它沒有對應的關鍵字.不過我們可以通過內置的數據庫對象sequence來實現.具體實現見下: */create sequence dept_autoincminvalue 50maxvalue 9999999999999999999999999999start with 50increment by 10nocache;INSERT INTO dept VALUES(dept_autoinc.nextval,'Production','Shanghai');

執行結果

注:對應oracle里的執行結果。

延展閱讀

Oracle 12c中已經有IDENTITY關鍵字來維護自增字段

CREATE TABLE t1 (c1 NUMBER GENERATED BY DEFAULT ON NULL AS IDENTITY,c2 VARCHAR2(10));INSERT INTO t1(c2) VALUES(10);INSERT INTO t1(c2) VALUES(20);

?

總結

以上是生活随笔為你收集整理的表的插入、更新、删除、合并操作_2_插入含自增列的记录的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。