Microsoft SQL Server 2014:将自引用表导出到SQL时生成的脚本顺序不正确

时间:2016-11-29 03:45:10

标签: sql sql-server sql-server-2014

我对SQL Server中的数据脚本生成工具有疑问。

我有一个表格,其中包含引用其父级parentId的列id。换句话说,该表是自引用的。当我为此表生成数据脚本时(使用Task - > Generate Scripts),SQL生成的顺序不正确。

生成的脚本似乎是列id的字母顺序,但忽略了自引用的外键。

表的架构

SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE TABLE [dbo].[MyTable] 
(
  [id] [nvarchar](50) NOT NULL,
  [parentId] [nvarchar](50) NULL

  CONSTRAINT [PK_MyTable] 
      PRIMARY KEY CLUSTERED([id] ASC) 
                  WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, 
                        IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, 
                        ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
GO

ALTER TABLE [dbo].[MyTable] WITH CHECK 
ADD CONSTRAINT [FK_MyTable_MyTable] 
    FOREIGN KEY ([parentId]) REFERENCES [dbo].[MyTable] ([id])
GO

ALTER TABLE [dbo].[MyTable] CHECK CONSTRAINT [FK_MyTable_MyTable]
GO 

生成的数据脚本不正确

INSERT [dbo].[MyTable] ([id], [parentId]) VALUES (N'AAA', N'BBB')
INSERT [dbo].[MyTable] ([id], [parentId]) VALUES (N'BBB', NULL)

我想以正确的执行顺序生成数据脚本,即包含重要ID的那些数据脚本必须先行,然后才能将其id用作其他数据脚本中的parentId。我真的找不到配置SQL Server的方法,尽管在网上搜索了一个星期我找不到任何解决方案。

请帮助!!

0 个答案:

没有答案