在 Sql Server 中有 sys Schema。sys.Columns, sys.Tables. 我有一個通用表,需要將其重命名為 SysUsers、SysRoles 等。
這樣做可以嗎?我不會使用 Sys 架構。我只是用Sys前綴表 我發現 SQL Server 本身通常會這樣做
select * FROM SysColumns // NOTE its not sys.Columns
編輯:
正如下面提到的答案。有一個為 SQL Server 本身保留的 sysTables 串列。這就是為什么我不會使用sys作為前綴的原因。

uj5u.com熱心網友回復:
TL;DR:不要這樣做。
您將遇到名稱沖突,并且您的物件將無法使用。
我強烈建議不要這樣做。如果您有任何名稱沖突的物件,您將無法參考它。
舉這個簡單的例子:
USE master;
GO
CREATE DATABASE Sillytest;
GO
USE Sillytest;
GO
SELECT *
FROM syscolumns;
GO
SELECT *
FROM dbo.syscolumns;
GO
SELECT *
FROM sys.syscolumns;
GO
CREATE TABLE dbo.syscolumns (ID int, ColumnName sysname);
GO
SELECT *
FROM syscolumns;
GO
SELECT *
FROM dbo.syscolumns;
GO
SELECT *
FROM sys.syscolumns;
GO
USE master;
GO
DROP DATABASE Sillytest;
GO
對每一個基準syscolumns,無論是由前綴dbo,sys或者根本沒有,參考的物件sys.syscolumns。這些陳述句中沒有一個從我創建的(空)用戶表回傳資料dbo.syscolumns。還要注意,dbo.syscolumns在我創建具有該名稱的表之前的參考也有效。
是的,您可以創建物件,但如果名稱已作為sys.sys{object}物件存在,則您將無法使用它。
除此之外,已經有一個 object sys.sysusers,所以我們實際上有了答案;不要這樣做,你已經有沖突了。
uj5u.com熱心網友回復:
完全同意@Larnu,我贊成這個答案。讓我再補充一個。
通過在所有表名的前面放置一個前綴,實際上損害了搜索、排序和過濾表的能力。它會減慢資料庫的速度。它會損害 SSMS 行為和 3rd 方工具。
不要這樣做,但也不要用別的東西來做;tbl,標簽,沒有那些垃圾。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/372112.html
標籤:sql-server 数据库 数据库设计 模式 数据库管理
