小编vr8*_*8ce的帖子

为什么 SSMS 生成的脚本缺少索引?

SSMS 17.4,Win10 1709 上的 SQL Server 2017 开发人员版

\n\n

我已经安装了 WorldWideImporters 示例数据库。其中一张表 Sales.Customers 具有多个外键和多个外键索引。编写表脚本时(Script Table, CREATE To\xe2\x80\xa6),脚本包含外键,但不包含外键索引。如果我只是更改表的名称并运行生成的脚本,则会使用所有 FK 约束创建该表,但不包含任何 FK 索引。

\n\n

对于即使您没有安装 WWI 示例也可以看到的内容,我这样做了。

\n\n
CREATE TABLE bar (\n  bar_id int,\n  col1 varchar(20),\n  CONSTRAINT pk_bar PRIMARY KEY CLUSTERED (bar_id)\n)\nCREATE TABLE foo (\n  foo_id int,\n  foobar_id int,\n  col1 varchar(20),\n  CONSTRAINT pk_foo PRIMARY KEY CLUSTERED (foo_id)\n)\nALTER TABLE foo WITH CHECK\n  ADD CONSTRAINT FK_bar FOREIGN KEY (foobar_id) REFERENCES bar (bar_id)\nALTER TABLE foo CHECK CONSTRAINT FK_bar\n
Run Code Online (Sandbox Code Playgroud)\n\n

这会创建两个表,其中 foo 对 bar 有 FK …

sql-server sql-server-2017 ssms-17

5
推荐指数
1
解决办法
1186
查看次数

VSCode 是否有按键/命令将光标移动到屏幕的第一行/最后一行?

(在 OS X 10.12.6 上运行 1.21.1)

我在 SO 的其他地方找到了对此功能的引用,但是给出的击键会将屏幕向上/向下滚动一行,它不会将光标移动到屏幕的顶部/底部。也许 Windows 上的功能与 Mac 上的不同?

我在键盘快捷键和键绑定文件本身中搜索了“顶部”或“第一个”或“屏幕”,但我没有看到任何内容。

我要么遗漏了一些东西(可能),要么我没有寻找正确的词语。其按键和/或命令是什么?

visual-studio-code

5
推荐指数
1
解决办法
2545
查看次数

如何使用 SQL 变量迭代 XML 节点

我在 SQL Server 2008 中有这个 XML:

DECLARE @xml xml = '<Root>
                      <Contacts>
                        <Contact name="John Doe" type="REG" other="value" />
                        <Contact name="Jane Doe" type="REG" other="value" />
                        <Contact name="Jennifer Doe" type="REG" other="value" />
                        <Contact name="Jane Doe" type="REG" other="value" />
                      </Contacts>
                    </Root>'
Run Code Online (Sandbox Code Playgroud)

我想将类型的值更改为其他值。我可以毫无问题地对我想要更改的进行硬编码。

SET @xml.modify('replace value of (/Root/Contacts/Contact)[1]/@type with "NEW"')
SELECT @xml
Run Code Online (Sandbox Code Playgroud)

无论我在括号中输入什么值,“都会做正确的事情”。IOW,上面更改了第一个,将其更改为 [3] 更改了第三个,依此类推。

我想把它们全部改变,不管有多少。因此,我需要获取计数,然后使用变量迭代它们。获取计数很容易,但我无法让变量起作用。

IOW,这个 XML 只是用变量替换了上面的 [1],但它不起作用。

DECLARE @i int = 1
SET @xml.modify('replace value of (/Root/Contacts/Contact)[sql:variable("@i")]/@type with "NEW"')
SELECT @xml
Run Code Online (Sandbox Code Playgroud)

它给了我这个错误,这告诉我我做错了什么,但我无法理解这个错误来弄清楚我做错了什么:

Msg 2337,Level 16,State 1,Line 14
XQuery [modify()]:“replace”的目标最多只能是一个节点,找到“attribute(type,xdt:untypedAtomic) *” …

xml sql-server sql-server-2008

1
推荐指数
1
解决办法
2140
查看次数