Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/82.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
周末/每周一天自动更改查询(MS SQL)_Sql_Sql Server - Fatal编程技术网

周末/每周一天自动更改查询(MS SQL)

周末/每周一天自动更改查询(MS SQL),sql,sql-server,Sql,Sql Server,我使用另一个数据库的表a上的视图来插入/更新表B 视图具有筛选新行以减少网络流量的条件: SELECT ... from A WHERE new_records = 1 基于这个观点,我每天每小时都有一个存储过程在运行 每周一次,我想用一个使用表a中所有记录的查询来验证我的表B 我想把这种观点改成: SELECT ... from A -- WHERE new_records = 1 我想知道是否有一份能改变我看法的工作。但是,我发现我不能在存储过程中执行ALTER视图 有可能包括这样的内

我使用另一个数据库的表a上的视图来插入/更新表B 视图具有筛选新行以减少网络流量的条件:

SELECT ... from A
WHERE  new_records = 1
基于这个观点,我每天每小时都有一个存储过程在运行

每周一次,我想用一个使用表a中所有记录的查询来验证我的表B

我想把这种观点改成:

SELECT ... from A
-- WHERE new_records = 1
我想知道是否有一份能改变我看法的工作。但是,我发现我不能在存储过程中执行ALTER视图

有可能包括这样的内容吗

 IF today = Sunday then Do not use WHERE 
 ELSE
 ...WHERE
怎么样
其中new_records=1或datepart(工作日,getdate())=7
怎么样
其中new_records=1或datepart(工作日,getdate())=7

我将把它实现为两个视图-第一个视图选择所有内容,第二个视图从第一个视图中选择附加的
new\u records=1
过滤器

您可以在单个视图中添加所询问的逻辑:

WHERE datename(DW,GETDATE()) = 'Sunday' OR new_record=1
但我真的不喜欢将视图编码为在特定日期改变行为的概念,当您想要运行特别验证时会发生什么?你会被卡住的

该过程称为每小时一次,但您提到您希望每周检查一次,如果它是一个单一视图,您将在周日将其作为检查运行24次,因为您的每小时呼叫在周日开始


最后一点注意-如果您采用更改视图方法,则需要为执行帐户授予其他特权,否则可能会避免这些特权。

我会将其实现为两个视图-第一个视图选择所有内容,第二个视图使用附加的
new_records=1
过滤器从第一个视图中进行选择

您可以在单个视图中添加所询问的逻辑:

WHERE datename(DW,GETDATE()) = 'Sunday' OR new_record=1
但我真的不喜欢将视图编码为在特定日期改变行为的概念,当您想要运行特别验证时会发生什么?你会被卡住的

该过程称为每小时一次,但您提到您希望每周检查一次,如果它是一个单一视图,您将在周日将其作为检查运行24次,因为您的每小时呼叫在周日开始


最后一点注意-如果您采用了“更改视图”方法,则需要为执行帐户授予其他特权,否则可以避免这些特权。

更改元数据以匹配条件不如更改查询以检测条件更改元数据以匹配条件不如更改查询以检测条件我不明白它怎么不存在。这是满足“是否可能包含类似的内容”所需的确切代码。这也很好:比较工作正常。我不明白它为什么不工作。这是满足“是否可能包含类似的内容”所需的确切代码。这也很好:比较工作如预期的那样。这很好理解。然而,datename(DW,GETDATE())带来的结果依赖于语言。@Volker-确实如此,但我建议无论如何不要使用这种方法。这种方法非常有效,很容易理解。然而,datename(DW,GETDATE())带来的结果依赖于语言。@Volker-确实如此,但我建议无论如何不要这样做。