C# 基于单个表中的信息从数据库构建tsql insert语句
假设我有以下数据库/表(Fk表示所述表的外键): 如果我有一个“CustomerId”并直接访问数据库,有没有一种方法可以在不知道我的“CustomerId”所在的表之外的任何其他表的情况下循环访问数据库 我希望以正确的顺序生成sql insert语句,以重新创建整个客户结构,以便对客户具有Fk的任何内容以及客户具有Fk的任何内容也将被重新创建 我很乐意有人给我一个类似“如何”的链接。我之所以希望这样做,是因为我经常在工作中收到一个请求,说“x客户有y问题”,有时如果不将准确的数据输入测试数据库,几乎不可能弄清楚,因为您不想在生产中接触数据。因此,如果我能运行一个程序,按照客户在生产中的存在来构建客户,这将使我的生活更加轻松C# 基于单个表中的信息从数据库构建tsql insert语句,c#,sql-server,database,visual-studio-2012,sql-insert,C#,Sql Server,Database,Visual Studio 2012,Sql Insert,假设我有以下数据库/表(Fk表示所述表的外键): 如果我有一个“CustomerId”并直接访问数据库,有没有一种方法可以在不知道我的“CustomerId”所在的表之外的任何其他表的情况下循环访问数据库 我希望以正确的顺序生成sql insert语句,以重新创建整个客户结构,以便对客户具有Fk的任何内容以及客户具有Fk的任何内容也将被重新创建 我很乐意有人给我一个类似“如何”的链接。我之所以希望这样做,是因为我经常在工作中收到一个请求,说“x客户有y问题”,有时如果不将准确的数据输入测试数据库
我确信,使用数据库中的C#和/或存储的存储过程一定可以做到这一点。您可以使用以下方法获得对引用列的所有表的引用:
SELECT
ST.Name AS TableName
,SC.name AS ColumnName
FROM
sys.columns AS SC
INNER JOIN sys.tables AS ST
ON SC.Object_ID = ST.Object_Id
WHERE
ST.Type = 'U'
AND
SC.name = 'CustomerId'
我假设如果fk列名与主键名不完全匹配,则此操作将失败?是否仍然存在,使用它来了解事件的顺序?例如,如果表X的值尚未插入,则我可能无法将某些内容插入表Y中。您可以引用sys.constraints表来获取此信息。我正在做一个查询来测试这一点,如果我能完成这个查询,我会发帖的。我希望您能够构建某种查询。即使它不能100%工作,我仍然希望看到它,这样我就可以学习!试着看看这个问题和答案。给你一些好的开始工作的要点。
SELECT
ST.Name AS TableName
,SC.name AS ColumnName
FROM
sys.columns AS SC
INNER JOIN sys.tables AS ST
ON SC.Object_ID = ST.Object_Id
WHERE
ST.Type = 'U'
AND
SC.name = 'CustomerId'