Sql server 在SQL Server的联接视图中插入

Sql server 在SQL Server的联接视图中插入,sql-server,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

这是一个关于设计而不是解决问题的问题

我创建了三个这样的表

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,

)
该视图显示第一个表上的所有数据,其中“AreaId”被解析为该表的varchar标识符,UserLevel被解析为该表的varchar值,以及最后一个表的注册表状态的联接

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

我曾考虑过使用存储过程来插入,但我仍然不知道这是否是一种幻觉。 我的问题是

  • “有没有一种更合适的方法?”
  • “是否有一种方法可以创建一个视图,让我在其上插入?(无需手动传递int值)”
--这只是表的表示,而不是真正的表。 --我仍在学习如何正确使用SQL Server


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

根据我的经验,最常用的方法是编写一个存储过程,按照创建FK关系所需的顺序执行所有三个插入


这将是我明确的建议。

而不是视图中的触发器
?我想这可能是答案。但我不确定它是否比使用存储过程好。