我在另一个数据库的表A上使用VIEW,以便将其插入/更新到表B中 该视图具有过滤新行以减少网络流量的条件:
SELECT ... from A
WHERE new_records = 1
基于该视图,我有一个每小时运行一次的存储过程。
我想每周一次通过查询使用表A中的所有记录来验证表B
我想将“视图”更改为以下内容:
SELECT ... from A
-- WHERE new_records = 1
我想知道有一份能改变我观点的工作。但是我发现我无法在存储过程中执行ALTER VIEW。
是否可以包含
之类的内容 IF today = Sunday then Do not use WHERE
ELSE
...WHERE
答案 0 :(得分:4)
我将其实现为2个视图-第一个选择所有视图,第二个选择从第一个视图开始,并带有附加的new_records = 1
过滤器。
您可以在单个视图中添加您要询问的逻辑:
WHERE datename(DW,GETDATE()) = 'Sunday' OR new_record=1
但是我真的不喜欢编码视图在特定日期改变行为的概念,当您要进行临时验证时会发生什么?你会被卡住。
该过程称为每小时一次,但您提到要每周检查一次,如果是单个视图,则在周日谓词上接听每小时呼叫时,您将在周日将其运行为24次检查。
最后的注释-如果您采用变更视图方法,则必须为执行帐户提供其他特权,否则可以避免这些特权。
答案 1 :(得分:1)
怎么样
where new_records=1 or datepart(weekday,getdate())=7
?