3

1対多および多対多の関係を持つSQLデータベースがあります。ほとんどの関係は、自動インクリメントフィールド「ID」に基づいています。テーブルの行が削除される場合、このデータを後日復元する必要がある場合に備えて、データベースからデータを削除する前に、複数のテーブルのすべてのデータをXMLファイルにエクスポートすることがあります。

データベースIDはどのように扱われますか?データを既存のデータベースに復元するだけで、IDと関係はそのまま残りますか?

何かアドバイスをいただければ幸いです。

4

2 に答える 2

1

使用する場合は、IDENTITYフィールドにもデータを再挿入できます。SET IDENTITY_INSERT [table] ON

SET IDENTITY_INSERT yourTable ON

INSERT INTO
  yourTable (
    id,
    field1,
    field2
  )
SELECT
  id,
  field1,
  field2
FROM
  yourBackup

SET IDENTITY_INSERT yourTable OFF

INSERTステートメントでは、IDを含むすべてのフィールドを指定する必要があることに注意してください。


主キーを使用してレコードを再作成したら、それらを外部キーとして使用するテーブルにレコードを再作成できます。

于 2012-04-26T12:43:34.080 に答える
1

簡単な答え:はい。SQL Serverには、各テーブルに対して設定されたフラグがあり、ID列の値の指定が許可されているかどうかを示します。デフォルトではオフになっています。データを再挿入するときに、一時的に有効にする必要があります。

DECLARE @Id int
DECLARE @Name varchar(20) = 'Dave'


INSERT INTO Example(Name) VALUES(@Name)

SET @Id = SCOPE_IDENTITY()

DELETE FROM Example WHERE Id = @Id


SET IDENTITY_INSERT Example ON

INSERT INTO Example(Id, Name) VALUES(@Id, @Name)

SET IDENTITY_INSERT Example OFF

外部キーの関係を満たすには、「many」テーブルの前の「one」テーブルにデータを再挿入する必要があることに注意してください。

于 2012-04-26T12:48:03.160 に答える