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

推薦する

Vue で Graphql インターフェースを実装する例

注意:この記事は現在取り組んでいる nestjs+graphql+serverless 合宿における...

Linux で crond ツールを使用してスケジュールされたタスクを作成する方法

序文Crond は Linux のスケジュール実行ツール (Windows のスケジュールされたタス...

DockerとDocker-Composeの使用例

Docker は、アプリケーションをより速く配信するのに役立つオープンソースのコンテナ エンジンです...

同じ IP のアクセス頻度を制限するように nginx を設定する方法

1. nginx.conf の http{} に次のコードを追加します。 limit_conn_zo...

WeChatアプレットのスワイパードットのドットをスライダーに変更する方法

目次背景ターゲット効果アイデア成し遂げるスワイパーは変更を聞きますカスタムドットモジュール変更イベン...

js配列forEachインスタンスの詳細な使用方法

1. forEach() は map() に似ています。これも渡された関数に各要素を順番に適用します...

CSS3 でクールなスライス画像カルーセル効果を実現

今日は、CSS を使用してクールな画像カルーセル コンポーネントを作成する方法を学びます。その原理は...

Centos 6.5 での mysql-community-server. 5.7.18-1.el6 のインストール

次のコマンドを使用して、MySQL Serverがインストールされているかどうかを確認します。 [r...

MySQL 8.0 の非表示インデックスの詳細な説明

言葉MySQL 8.0 は最初のバージョンから 4 年を経てリリースされました。バージョン 8.0 ...

ffmpeg 中国語パラメータの詳細な説明

FFMPEG 3.4.1 バージョンパラメータの詳細使用方法: ffmpeg [オプション] [[入...

MySQLのエンコードの不一致によって発生する可能性のある問題

ストアドプロシージャとコーディングMySQL ストアド プロシージャでは、テーブルとデータのエンコー...

複雑なSQLクエリを含むMySQLの一般的なSQL文の概要

1. 複雑なSQLクエリ1.1. 単一テーブルクエリ(1)指定の列を選択する[例] 全生徒の生徒ID...

Node.js における npx コマンドの使用法とシナリオ分析

npx 使用チュートリアル今晩、 Vue-Cli勉強していたところ、ふと最新の@4.xxバージョンを...

SQL Server コメントのショートカット キー操作

SQL Server のバッチコメントバッチ注釈Ctrl + (K, C): Ctrlキーを押しなが...

MySQL 8.0.13 手動インストールチュートリアル

この記事では、MySQL 8.0.13の手動インストールチュートリアルを参考までに紹介します。具体的...