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 構文の詳細な説明 (必読)

1. HTML マークアップ言語とは何ですか? HTML は、Web ページの情報を表すマークアッ...

MySQL GRANT ユーザー認証の実装

承認とは、ユーザーに特定の権限を付与することです。たとえば、新しく作成したユーザーに、すべてのデータ...

HTML チュートリアル: DOCTYPE の省略形

HTML コードを書くとき、最初の行は DOCTYPE にする必要がありますが、DOCTYPE は通...

Vue のスロットの使用法と適用シナリオの詳細な分析

スロットとは何ですか? Vue では、子コンポーネント タグの中央に何もラップできないことはわかって...

MySQL の接続数が多すぎるエラーの原因と解決策

目次概要本日正午、開発およびテスト環境の MySQL サービスで接続数が多すぎるというエラーが報告さ...

Vue ベースの円形スクロールリスト機能を実装する

注: 親コンテナーに高さと :data='Array' および overfolw:h...

Vue の計算プロパティ

目次1. 基本的な例2. 計算プロパティキャッシュとメソッド3. 計算プロパティセッター序文:通常、...

MySQL v5.7.18 解凍バージョンのインストール詳細チュートリアル

MySQLをダウンロード5.1.1.1 より前のバージョン私のコンピュータは64ビットなので、Win...

MySQL 5.7.23 のインストールと設定のグラフィックチュートリアル

この記事では、mysql5.7.23 の詳細なインストールプロセスを記録し、皆さんと共有します。 1...

Web プロジェクト開発 JS 機能の手ぶれ補正とスロットリングのサンプル コード

目次安定導入手ぶれ補正シーン1(マウスの動き込み)手ぶれ補正シーン2(キーボードのキー)関数のスロッ...

MySQLデータベース監視binlogを有効にする手順

序文多くの場合、ユーザーが自分のデータに対して実行する操作に基づいて何かを行う必要があります。たとえ...

docker を使用して複数のネットワーク インターフェースを持つコンテナーを起動する方法の例

コンテナにネットワークインターフェースを追加する1 デフォルトのネットワークモードでコンテナを実行す...

個人履歴書を作成するための HTML の簡単な実装

履歴書コード: XML/HTML コードコンテンツをクリップボードにコピー<!DOCTYPE ...

Vue 計算プロパティ実装トランスクリプト

この記事では、Vueの計算プロパティ実装レポートカードを参考に共有します。具体的な内容は次のとおりで...

Dockerでspringcloudプロジェクトをデプロイする方法

目次Dockerイメージのダウンロードmysqlとnacosを起動する独自のJavaプロジェクトを変...