【问题标题】:What does the FOR keyword do in this SQL Server ALTER TABLE clause?这个 SQL Server ALTER TABLE 子句中的 FOR 关键字有什么作用?
【发布时间】:2021-07-12 07:10:38
【问题描述】:

我不确定 FOR 在这个 SQL Server sn-p 中做了什么。

ALTER TABLE [dbo].[TableName] 
    ADD DEFAULT (NEXT VALUE FOR [dbo].[TableName_Seq]) FOR [TableName_Key]

当我尝试用谷歌搜索 FOR 子句时,我得到的唯一有意义的结果是 this,但我认为这无关紧要

【问题讨论】:

标签: sql-server alter-table


【解决方案1】:

FORNEXT VALUE FOR 函数的关键字。用于返回指定序列对象的下一个值。

FOR也是DEFAULT约束子句的关键字,指定约束的目标列名。

在您问题中的 DDL 上下文中,函数结果是默认值,当 INSERT 语句中未明确指定值时自动分配值。

顺便说一句,最好的做法是命名约束而不是依赖自动生成的名称。这使得后续的架构修改更容易。

【讨论】:

  • True - if 那就是他要问的FOR - 该声明中有两个FOR,尽管......
  • 好点@marc_s,将其添加到我的答案中。
  • 另一种说法是,它只是 SQL 喜欢的那些不必要和模棱两可(依赖于上下文)的词之一,例如 insert INTO fetch NEXT ... ONLY left OUTER join
  • 谢谢@Charlieface。
【解决方案2】:

FOR 本身没有特定含义,取决于上下文。

在这种情况下,FOR 有两种用法:

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-27
    • 2015-09-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多