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 プロセス スケジューリングの問題の詳細な説明

推薦する

DockerにMinIOをインストールするための詳細な手順

目次1. docker環境が正常かどうかを確認する2. miniIOイメージをダウンロードする3. ...

mysql5.6.zip形式の圧縮版インストールグラフィックチュートリアル

はじめに: MySQL は、スウェーデンの MySQL AB によって開発されたリレーショナル デー...

Dockerコンテナアプリケーションログの表示方法

docker アタッチコマンドdocker attach [options] 容器実行中のコンテナに...

CSS の歪んだ影の実装コード

この記事では、CSS ワープ シャドウの実装コードを紹介し、皆さんと共有します。詳細は以下の通りです...

MySQLの水平および垂直テーブルパーティションの説明

前回の記事で、MySQL ステートメントの最適化には限界があると述べました。MySQL ステートメン...

Docker で MySQL 接続と設定ファイルの最大数を変更する

1. MySQLイメージを見つける ドッカーps 2. ミラーmysqlイメージを入力する dock...

XHTMLタグは適切に使用する必要があります

<br />123WORDPRESS.COM の以前のチュートリアルでは、Web ページ...

nginx keepaliveの具体的な使い方

http1.1 プロトコルのデフォルトのリクエスト ヘッダーでは、図に示すように、デフォルトで ke...

JavaScript ベースのシンプルなカルーセルの実装

この記事では、シンプルなカルーセルを実装するためのJavaScriptの具体的なコードを参考までに紹...

Vue プロジェクトで axios リクエストを使用する方法

目次1. インストール2. カプセル化に問題はない3. ファイルを作成する4. アドレス設定をリクエ...

CentOS 7.6 仮想ネットワーク カードのバッチ追加、変更、削除操作の紹介

1 カーネルにtunモジュールがあるかどうかを確認する modinfo tun modprobe t...

検証コード干渉を実装する js (静的)

この記事では、検証コード干渉を実装するためのjsの具体的なコードを参考までに共有します。具体的な内容...

CSS と HTML とフロントエンド テクノロジーのレイヤー図

フロントエンドテクノロジー層 (写真は少し極端ですが、参考までに) Javascript と DOM...

NginxはURLのパスに応じてアップストリームに動的に転送します

Nginx では、URL のパス パラメータに基づいて、到達不可能なアップストリームに動的に転送する...

Linux で一般的なソフトウェアを設定する方法

新しいLinuxサーバーを入手する場合、通常は次の5つの構成を実行する必要があります。 HOSTAN...