首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在向表中添加新行后动态创建视图

在向表中添加新行后动态创建视图
EN

Stack Overflow用户
提问于 2013-02-01 17:42:40
回答 1查看 1K关注 0票数 0

我有一个包含4个表的数据库

-battery -cell -owner

每个电池有多个电池和一个拥有者。

单元格表将包含大量条目。我想要一个触发器,为每个新电池创建视图,显示电池信息及其电池信息。

我有一个postgre sql触发器,它工作得很好(多亏了stackoverflow :):

代码语言:javascript
复制
    BEGIN

EXECUTE $$CREATE OR REPLACE VIEW battery_vue
AS
SELECT * FROM cells WHERE battery_serial = $$ || NEW.battery_serial;

RETURN NEW;

END;

但我无法将其转置到SQL server上,而且我完全不知道如何做到这一点。

下面是我的数据库的简单示意图:

因此,在每个新电池的末尾,我需要一个它和它的电池的视图。

Ps :如果我的英语不流利,很抱歉:/

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-02-02 06:45:05

希望这能为你指明正确的方向……

代码语言:javascript
复制
   /*Create a test table*/
IF OBJECT_ID('TestBattery') IS NOT NULL
BEGIN
    DROP TABLE dbo.[TestBattery]
END
GO

CREATE TABLE dbo.[TestBattery]
(
id          INT
,owner_id    INT
,data_id     INT
)
GO

/*Create a test trigger*/
IF OBJECT_ID('trg_TestBattery_CreateView') IS NOT NULL
BEGIN
    DROP Trigger dbo.trg_TestBattery_CreateView
END
GO


CREATE TRIGGER [dbo].[trg_TestBattery_CreateView]
ON [dbo].[TestBattery] AFTER INSERT
AS
SET NOCOUNT ON 

DECLARE @BatteryID      INT
        ,@View          VARCHAR(200)
        ,@SQLCreateView VARCHAR(MAX)

SELECT @BatteryID = ID FROM INSERTED

/*Dynamically generate new view name based on BatteryID that was inserted*/
SELECT @View = 'TestBattery_'+CAST(@BatteryID AS VARCHAR)

/*Generate SQL to create the view*/
SELECT @SQLCreateView = 'CREATE VIEW '+@View+' AS SELECT [id],[owner_id],[data_id] FROM dbo.[TestBattery] WHERE ID = '+CAST(@BatteryID AS VARCHAR)

/*We create the view only if it doesn't exist*/
IF OBJECT_ID(@View) IS NULL
BEGIN

EXEC(@SQLCreateView)

END
GO

/*Testing your trigger*/
INSERT INTO TestBattery
(
id
,owner_id
,data_id
)
SELECT
'1'
,'2'
,'3'

SELECT * FROM TestBattery
SELECT * FROM TestBattery_1

/*Take out the trash*/
DROP TABLE TestBattery
DROP VIEW TestBattery_1
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14643412

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档