2017-10-20 10 views
0

これは、問題を解決することよりも設計に関する質問です。 結合ビューへの挿入SQL Server

私はそのテーブルのVARCHAR識別子として解析され、「エリアID」との最初のテーブルのすべてのデータを示す図で、そのような

CREATE TABLE [CapInvUser](
    [UserId] [int] IDENTITY(1,1) NOT NULL, 
    [Name] [varchar](150) NOT NULL, 
    [AreaId] [int] NULL, 
    [Account] [varchar](150) NULL, 
    [mail] [varchar](150) NULL, 
    [UserLevelId] [int] NOT NULL 
) 

CREATE TABLE [CapInvUserLevel](
    [UserLevelId] [int] IDENTITY(1,1) NOT NULL, 
    [Level] [varchar](50) NOT NULL 
) 

CREATE TABLE [CapInvUserRegistry](
    [UserRegistryId] [int] IDENTITY(1,1) NOT NULL, 
    [UserLevelId] int NOT NULL, 
    [DateRegistry] DATE NOT NULL, 
    [RegistryStatus] VARCHAR(50) NOT NULL, 

) 

として3つのテーブルを作成し、ユーザレベルがVARCHARとして解析されますそのテーブルの値、および最後のレジストリステータスの結合が含まれます。

今は新しいユーザーを登録するときに、3つのテーブルに別々のクエリを使用して挿入しますが、同時にすべてのテーブルに挿入する必要があるようです。

私は挿入するストアドプロシージャを使用することについて考えましたが、それはapropiateするかどうかまだ分かりません。 私の質問は

  • ある「これを行うよりapropiate方法はありますか?」
  • 「私はそれの上に挿入できるようになるビューを作成する方法はありますか?(手動int型の値を渡さずに)」

- このは、テーブルの単なる表現、ではありません本当のもの。 - 私はまだSQL Serverを適切に操作する方法を学んでいます。

ご回答いただきありがとうございます。

+0

「トリガーに置き換えられました」と表示されますか? – lad2025

+0

私はこれ以外にもこの答えがあるかもしれないと思っています。しかし、私はそれがストアドプロシージャを使用するよりも良いのかどうかはわかりません。 – Richard

答えて

1

これを行う一般的な方法は、私の経験上、FKリレーションシップを作成するのに必要な順序で3つの挿入をすべて行うストアドプロシージャを作成することです。

これは私の推薦です。