我很高兴*在审计触发器中使用。
在这种情况下,它实际上可以证明是一个好处,因为它将确保如果向基表添加额外的列,它将引发错误,因此不会忘记在审计触发器和/或审计表结构中处理此问题。
(像dotjoe)我也很高兴在派生表和列表表达式中使用它。虽然我习惯性地反过来做。
WITH t AS (SELECt *, ROW_NUMBER() OVER (ORDER BY a) AS RN FROM foo)SELECt a, b, c, RNFROM t;
我最熟悉
SQL Server并且至少优化器没有问题,认识到只
a,b,c需要列并且*在内表表达式中使用 不会导致任何不必要的开销检索和丢弃不需要的列。
原则上
SELECT *在视图中应该没问题,并且它是SELECT应该避免的视图的最终结果,但是在
SQL Server中这可能会导致问题,因为它存储视图的列元数据,当基础表更改时不会自动更新
*除非
sp_refreshview运行来更新此元数据,否则使用可能会导致混淆和不正确的结果。



