SQL IDENTITY_INSERT ケーススタディ

SQL IDENTITY_INSERT ケーススタディ

一般的に、データ テーブル内の列を ID 列として設定すると、ID 列の表示値を手動で ID 列に挿入することはできません。ただし、SET IDENTITY_INSERT プロパティを設定することで、ID 列に表示値を手動で挿入することができます。

書き方:

  1. SET IDENTITY_INSERT テーブル名 ON: ID 列の表示値の挿入モードがオンになっていることを示します。これにより、ID 列の表示値のデータを手動で挿入できるようになります。
  2. SET IDENTITY_INSERT テーブル名 OFF: ID 列の表示値の挿入操作をオフにすることを示します。ID 列では、表示値を手動で挿入することはできません。

注意: IDENTITY_INSERT ON と OFF はペアで表示されるため、手動挿入操作を実行した後は、IDENTITY_INSERT を OFF に設定することを忘れないでください。そうしないと、次のデータの自動挿入が失敗します。

例えば:

b_id を識別列として持つテーブル b1 を作成します。これを 1 から始まる一意の識別子として設定します。新しいデータが挿入されるたびに、値は 1 ずつ増加し、空にすることはできません。

テーブルb1を作成
(
b_id int identity(1,1) 主キーがnullでない、   
b_name varchar(20) ヌル
)

テーブル b1 の b_id 列が一意の識別子列として設定されている場合、IDENTITY_INSERT プロパティの値はデフォルトで OFF に設定されます。 ID 列 b_id では、表示値を手動で挿入することはできません。システムは、表示値をソート順に自動的に挿入することしかできません。

1. IDENTITY_INSERTがOFFの場合、テーブルb1に2つのレコードを挿入し、ID列に表示値を手動で挿入します。

コード1:

b1(b_id,b_name) に値(1,'Lily') を挿入します。
b1(b_id,b_name) に値(2,'阿呆') を挿入します

結果を挿入:

コード2:

b1(b_name) に値('Lily') を挿入します
b1(b_name) に値('阿呆') を挿入します

結果を挿入:

注意: IDENTITY_INSERT が OFF に設定されている場合、ID 列への表示値の手動挿入は許可されません。システムは ID 列に表示値を自動的に挿入することしかできません。

2. IDENTITY_INSERTがONの場合、テーブルb1に2つのレコードを挿入し、ID列に表示値を手動で挿入します。

コード1:

set identity_insert b1 on -- ID 列の挿入モードを有効にします。ID 列では、表示値を手動で挿入できます。 insert into b1(b_id,b_name) values(8,'小白') -- ID 列 b_id の表示値を 8 に手動で挿入します。
b1(b_id,b_name) に値(9,'小黒') を挿入します
set identity_insert b1 off -- ID 列への挿入操作を無効にします。ID 列では、表示値を手動で挿入することはできません。

結果を挿入:

コード2:

set identity_insert b1 on -- ID 列の挿入モードを有効にします。ID 列では、表示値を手動で挿入できます。 insert into b1(b_name) values('小胖') -- ID 列の表示値を手動で挿入します b_id to 8
b1(b_name) に値('Xiaobao') を挿入します
set identity_insert b1 off -- ID 列への挿入操作を無効にします。ID 列では、表示値を手動で挿入することはできません。

結果を挿入:

注意: IDENTITY_INSERT を ON に設定する場合は、ID 列に挿入する表示値を指定し、その表示値を手動で ID 列に挿入する必要があります。システムは ID 列の表示値を自動的に挿入しなくなるためです。したがって、ID 列に表示値を手動で挿入する必要があります。

SQL IDENTITY_INSERTの詳細な事例についてはこれで終わりです。SQL IDENTITY_INSERTの役割についてさらに詳しく知りたい方は、123WORDPRESS.COMの過去の記事を検索するか、以下の関連記事を引き続きご覧ください。今後とも123WORDPRESS.COMをよろしくお願いいたします。

以下もご興味があるかもしれません:
  • [プロジェクトレイアウト構成] NosqlとPython Web-Flaskフレームワークの組み合わせ
  • MySQL 1130例外、リモートログインできない解決策
  • MySQLデータベース移行におけるデータ文字化けの問題を解決する
  • SQL の記述 - 行の比較
  • MySQL 接続例外とエラー 10061 の解決方法
  • SpringBoot application.yamlファイル構成スキーマがSQLを実行できない問題を解決する
  • Mac に MySQL データベースをインストールし、環境変数を設定するためのグラフィック チュートリアル
  • JavaSwing をベースに設計・実装されたホテル管理システム

<<:  reduxの動作原理と使い方の説明

>>:  Nginx プロセス スケジューリングの問題の詳細な説明

推薦する

html リンク タグ タイトル属性 改行 マウス ホバー プロンプト コンテンツ 改行効果

オブジェクト上にマウスを移動したときにコンテンツ(タイトル属性の内容)を折り返す方法、HTML タイ...

Element+vueを使用して開始時間と終了時間の制限を実装する

この記事の例では、Element+vueを使用して開始と終了の時間制限を実装するための具体的なコード...

ウェブページのテーブルの境界線を設定する方法

<br />前回は、Web テーブルにセルの線を設定する方法を学びました。今日は、Web...

MySQL スロークエリ pt-query-digest スロークエリログの分析

1. はじめにpt-query-digest は、MySQL のスロー クエリを分析するためのツール...

HTML と CSS に関する基本的なメモ (フロントエンドでは必読)

HTMLに触れた当初はレイアウトにいつもテーブルを使っていましたが、とても面倒で見た目も悪かったの...

CSS 属性値 clear:right が機能しない理由の詳細

clear プロパティを使用してフロートをクリアすることはよくあることであり、clear プロパティ...

JavaScript における async と await の使い方とメソッド

JS の async 関数と await キーワード 関数ヘルワールド() { 「こんにちは!美しい...

Vue 要素と Nuxt の使用に関するヒントを共有する

1. 要素時間選択提出フォーマット変換例えば 2018年9月7日金曜日 00:00:00 GMT+0...

CentOS 7.6 への MySQL 5.7 GA バージョンのインストール チュートリアル図

目次環境の準備環境の準備mariadbをアンインストールする rpm -qa | grep mari...

SQL 実装 LeetCode (185. 部門内で最も給与の高い上位 3 名)

[LeetCode] 185. 部門別給与上位3位従業員テーブルにはすべての従業員が保持されます。...

JavaScriptの浅いコピーと深いコピーについての簡単な説明

目次1. 直接譲渡2. 浅いコピー3. ディープコピー1. JSONオブジェクトメソッド2. 再帰コ...

いくつかの重要なMySQL変数

MySQL 変数は数多くありますが、その中には注目に値するものもあります。ここでは、参考までに、注目...

MySQLは文字列の連結、インターセプション、置換、位置検索操作を実装しています

MySQL 文字列の連結、インターセプト、置換、および検索位置。よく使用される文字列関数:関数例示す...

MACでMYSQLデータベースのパスワードを忘れた場合の解決策

Mac オペレーティングシステムで MYSQL データベースのパスワードを忘れた場合の簡単な解決策1...

JavaScriptで配列を作成する方法の詳細な説明

目次JavaScript で配列を作成する配列の使用配列を分割文字列に変換する配列に要素を追加する配...