2017-10-20 72 views
0

这是一个关于设计而不是解决问题的问题。插入连接视图SQL Server

我创建三个表为这样

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, 

) 

随着显示被解析为表的VARCHAR标识符与“areaID表示”第一表中的所有数据的图,所述的UserLevel被解析为VARCHAR该表的值,以及最后一个注册表状态的联合。

现在,当我想注册一个新用户时,我使用单独的查询插入到所有三个表中,但我觉得我应该有一种方法可以同时插入到所有这三个表中。

我想过使用存储过程来插入,但我仍然不知道这是否会是apropiate。 我的问题是

  • “是否有这样做的更apropiate的方式?”
  • “有没有一种方法来创建一个视图,将让我插过吗?(没有手动传递的int值)”

- 这只是表的表述,而不是真正的。 - 我仍然在学习如何正确使用SQL Server。

感谢您的回答和/或指导。

+0

'INSTEAD OF TRIGGER' on view? – lad2025

+0

我在想,INSTEAD OF可能就是这个答案。但我不确定是否比使用存储过程更好。 – Richard

回答

1

根据我的经验,最常见的做法是编写一个存储过程,以所需顺序执行全部三个插入操作以创建FK关系。

这将是我明确的建议。