2

我在SQL Server. 我有一个包含超过 103 列的表,其中只有 20 列被非常频繁地使用,并且被许多表引用。

由于表包含数千行,我创建了一个垂直分区并将表分成多个表,以便将表数据保存在不同的文件组中。

我还通过加入这些表创建了一个视图。现在,如何在不使用INSTEAD OF触发器的情况下将数据插入到不同的表中?

4

1 回答 1

1

您可以使用存储过程来封装所有插入逻辑。

如果您有 3 个表共享相同的 ID 列并且每个表都有额外的列,那么您的存储过程可能如下所示:

CREATE PROCEDURE usp_Insert
(
    @Val1 VARCHAR(5)
  , @Val2 VARCHAR(5)
  , @Val3 VARCHAR(5)
)
AS 
BEGIN

    DECLARE @id INT;

    INSERT INTO Table1 (Col1) VALUES (@Val1);

    SELECT @id = SCOPE_IDENTITY();

    INSERT INTO Table2 (ID, Col2) VALUES (@id, @Val2);
    INSERT INTO Table3 (ID, Col3) VALUES (@id, @Val3);

END
GO

SQLFiddle 工作演示和示例表

于 2013-10-25T12:15:19.277 回答