views
我可以像我想添加一个column
将提供已foreign_key
应用的列名称的系统定义进行更改吗?
比如,在sys.foreign_key_columns
.
请给我脚本或来源。
views
我可以像我想添加一个column
将提供已foreign_key
应用的列名称的系统定义进行更改吗?
比如,在sys.foreign_key_columns
.
请给我脚本或来源。
Microsoft 会告诉您无法更改系统视图的定义。这在大多数情况下是不正确的(毕竟,Microsoft 自己可以通过升级来做到这一点),但作为用户,您确实不应该这样做,并且这样做所需的步骤是(故意) 非常复杂。如果您确实成功地更改了系统视图,那么您的服务器将不再受到支持,并且您可能无法安装未来的更新。基本上,不要走这条路。
作为一种更实用的方法,请考虑将系统视图包装在您自己的视图中并改用这些视图。如果您想让这些视图在所有新数据库中可用,您可以将它们添加到model
数据库中。
对于还包括外键所指列的名称的视图的特定情况,这是一个可以完成这项工作的视图(通常是外键的更友好的视图):
CREATE VIEW ext_foreign_keys AS
SELECT
OBJECT_NAME(constraint_object_id) AS foreign_key_name,
OBJECT_NAME(parent_object_id) AS parent_table_name,
COL_NAME(parent_object_id, parent_column_id) AS parent_column_name,
OBJECT_NAME(referenced_object_id) AS referenced_table_name,
COL_NAME(referenced_object_id, referenced_column_id) AS referenced_column_name
FROM sys.foreign_key_columns
如果您需要来自sys.foreign_keys
自身的数据,请将其加入。OBJECT_NAME
通过使用系统功能和;我在这里很懒惰COL_NAME
;sys.tables
如果您愿意,您也可以在and上显式加入sys.columns
,尽管这需要更多的输入。无论如何,您可能都希望这样做,因为在使用这些函数时存在锁定问题。