Sql-server存储过程:如果视图更改,则更新表

时间:2016-10-20 05:38:04

标签: sql sql-server stored-procedures timestamp

我从不同的表中创建了一个视图,在这个视图中有:

`name, surname, id, organization, beginDate, endDate` 

仅当在源表中此值为 null 时才会获取endDate。如果它有一个值,意味着这个人不再在他的组织中,所以我使用这个值来知道我必须在我的视图中加载哪一行。 (同样,如果值不为null,则视图中不再存在该行)

从这个视图中,我需要创建一个表,其中存储过程每晚都可以运行:

name, surname, id, organization, beginDate, whenChanged, disabled

第一次,此表是视图的精确副本,包含所有

whenChanged = current_timestamp and all disabled=flase

视图中的值应该相同,如果视图中的一个或多个属性发生更改,则whenChanged是使用current_timestamp更新的时间戳。 如果视图中仍然存在该行,则禁用值(布尔值)应为false;如果视图中不再有该行,则该值应为true(在源表中它具有非空endDate并且它是没有从视图中获取)

有任何帮助吗?

1 个答案:

答案 0 :(得分:0)

非常抱歉,我在移动设备上并且“输入”有一个奇怪的行为......顺便说一句,我不完全确定我应该使用触发器,因为我必须在许多表格和一些表格中执行此操作,没有钥匙。

例如,我有一个表分配:

Id1,startDate,endDate not null,organization Id1,startDate2,null,组织 ......

触发器会在此表上运行吗?我需要更新另一个表,其中包含来自赋值的数据,仅当id匹配且另一个id行为null endDate时。如果具有该id的每一行的endDate不为null,则表示我必须设置禁用值。

此外,触发器是否与视图一起使用?如果我的视图有变化,是否可以在我的表上定义更新该表的触发器?我想不是......