我需要删除SQL Server数据库中高度引用的表.如何获取我需要删除的所有外键约束的列表以便删除表?
(在管理工作室的GUI中,SQL答案比点击更好.)
我想从SQL Server(2008)中的数据库中获取所有索引,键和外键的详细信息.我该怎么做呢?
我计划使用它来在几个有点类似的数据库中同步这些属性.
我可以使用SQL Server Management Studio,但由于Web主机设置的限制,我无法对数据库进行完整备份.
-
您不需要回答的次要问题:
为什么不能在Mysql中出现类似于数据库模式的东西,它只是以文本SQL脚本格式列出所有数据库结构?
我有一个大的SQL 2012数据库(100个表),其中我需要找到参照操作设置为CASCADE(更新或删除)的所有约束.
在这个有用的答案中,我看到我可以使用以下T-SQL列出约束(略微改编):
SELECT
name,
delete_referential_action_desc,
update_referential_action_desc
FROM
sys.foreign_keys
WHERE
update_referential_action_desc = 'CASCADE' OR
delete_referential_action_desc = 'CASCADE';
Run Code Online (Sandbox Code Playgroud)
这提供了一个有用的列表:
name delete_referential_action_desc update_referential_action_desc
----------------------------------------------------------------------
FK_name001 CASCADE CASCADE
FK_name002 CASCADE NO_ACTION
FK_name003 CASCADE NO_ACTION
Run Code Online (Sandbox Code Playgroud)
但是,是否可以扩展代码,以便为每个约束包含相应的表名和列名,例如?
name delete_referential_action_desc update_referential_action_desc ParentTable ParentCol ChildTable ChildCol
----------------------------------------------------------------------------------------------------------------------------
FK_name001 CASCADE CASCADE Table1 Col1 Table2 Col2
Run Code Online (Sandbox Code Playgroud)
我尝试过不同的编辑从中提取值sys.objects但无法弄清楚它是如何工作的,或者这是否是正确的方法.
请注意,我不想给ALTER任何东西,或作出任何架构更改.我只是想查看一个列表,以便我可以手动执行进一步的操作.我没有信心或经验来编辑这个巨大的查询来拉出重点.
我有一个表 tableA,其中有一列 myID。myID 是表 A 中的主键,是表 B 中的外键。
当我尝试更新 tableA 中特定记录的 myID 时:
update tableA
set myID = 123456
where myID= 999999
Run Code Online (Sandbox Code Playgroud)
我收到这个错误:
UPDATE 语句与 FOREIGN KEY 约束“tableA_FK00”冲突。冲突发生在数据库“mydatabase”、表“tableA”、列“myID”中。
我已将 myID 的更新规则设置为“级联”并将外键约束强制执行为“否”,但我仍然无法更新。我应该如何进行?
我想在我的数据库中找到所有引用某个表的主键的外键.
例如,我A在表中有一列T是主键.现在我想找到A外键约束中引用哪些表列?
我考虑过的一个简单方法是检查数据库图表,但这只适用于数据库非常小的情况.对于拥有50个以上表的数据库来说,这不是一个很好的解决方案.
任何替代品?
sql sql-server foreign-keys primary-key foreign-key-relationship