2017-03-28 5 views
-1

私のウェブサイトの以前のバージョンからのアクセス許可についてのテーブルがあります。私はそれらを保持する必要がありますが、最新のWebアプリケーションバージョンはそれ自身であり、おそらくこのテーブルに必要な基本設定を持っています。主キーを自動的に変更する既存のテーブルをインポートできますか?

したがって、既存のプライマリキーを上書きしたりスキップしたりすることなく、バニラデータをテーブルにインポートする必要があります。つまり、プライマリキーを自動的に未使用のものに更新します。これは可能ですか?どうやって?

+0

新しい権限データとは異なるテーブルに古い権限データを保存することはできますか?同じテーブルに保存する必要がありますか?以前と同じ主キーシステムを使用し続けることを目指しているのですか、またはこの最新のWebアプリケーションは、新しいWebアプリケーション用の新しい主キーシステムを開始する必要があることを意味しますか? – toonice

+0

すべての権限を一緒に挿入する必要があります。 PKシステムは同じでなければなりません。 – Phazoner

+0

プライマリは自動インクリメントフィールドですか? – toonice

答えて

0

はい可能です。 INSERT INTO .. SELECT FROM

insert into new_table(col1, col2, ...,coln) 
select col1, col2, ...,coln from old_table; 

なしのように構築使用し、単にINSERT文で、あなたのPKの列が含まれており、そのため、あなたのインポートしたテーブルのPKであればと、それが自動的に生成されます合成や自動インクリメント列ではありません。

+0

これにより、相反するPKはどのように変化しますか?それは既存のPKsまたは輸入されたものを変更するか? – Phazoner

+0

@Phazoner、それが役立つ場合は、回答を編集してください。 – Rahul

+0

これは自動インクリメントされていませんが、合成されているかどうかわかりません。どうすれば確認できますか? – Phazoner

0

次は私の提案の文構造の一例である -

INSERT INTO tblNewPermissions (permissionsID, 
           oldPermission1, 
           oldPermission2, 
           newPermission1, 
           newPermission2) 
SELECT permissionsID, 
     permission1, 
     permission2, 
     "newPermission1DefaultValue", 
     "newPermission2DefaultValue" 
FROM tblOldPermissions; 

注:あなたは、古いデータを格納するために使用される新しいテーブルのフィールドは、データ型が一致していることを確認する必要があります。

注:この方法では、主キーが自動インクリメントフィールドではないことが前提です。

この回答に質問やコメントがある場合は、それに応じてコメントを投稿してください。

+0

私はすでに投稿したのと同じ回答を本質的に与えていませんか? – Rahul

+0

あなたの答えでは、フィールドリストの主キーは明示的に参照されていません。古いパーミッションをインポートする方法を示していますが、新しいデータとの統合方法は示されていません。 – toonice

+0

また、プライマリキーが自動的に生成されているとは限りません。元の質問と私の質問に答えて判断すると、新しいレコードの主キーを構成する古いレコードの主キーがインポートされ、SQLステートメントで明示的に参照される必要があります。 – toonice

関連する問題