📜  SQL Server 中的 ALTER SCHEMA

📅  最后修改于: 2021-09-08 15:12:42             🧑  作者: Mango

ALTER SCHEMA语句用于将对象从模式传输到同一数据库中的另一个模式。

句法 :

ALTER SCHEMA target_schema_name    
   TRANSFER [ object_type :: ] object_name;

参数 :

  • target_schema_name是数据库中的架构,对象将移入其中。
  • object_type表示将更改其所有者架构的对象的类型。
  • object_name是将移动到 target_schema_name 的对象的名称。

注意:不能更改 SYS 或 INFORMATION_SCHEMA。

例子 :
让我们在dbo模式中创建名为 geektab 的表:

CREATE TABLE dbo.geektab
(id INT PRIMARY KEY IDENTITY,
name NVARCHAR(40) NOT NULL,
address NVARCHAR(255) NOT NULL);

现在,在 dbo.geektab 表中插入一些行:

INSERT INTO dbo.geektab (id, name, address)

VALUES (1, 'Neha', 'B-Wing, Delhi'), (2, 'Vineet', 'D-Wing, Noida');

让我们创建一个查找 id 的存储过程:

CREATE PROCEDURE sp_get_id(@id INT
) AS
BEGIN
SELECT *
FROM dbo.geektab
WHERE id = @id;
END;

让我们将此dbo.geektab移动到极客模式:

ALTER SCHEMA 极客转移对象::dbo.geektabs;

运行 sp_get_id 存储过程:

EXEC sp_get_id;

SQL Server 将抛出类似于下面提到的错误:

strong>Msg 208, Level 16, State 1, Procedure sp_get_id, Line 3
Invalid object name 'dbo.geektab'

现在,让我们手动更改存储过程以反映极客模式:

ALTER PROCEDURE sp_get_id( @id INT
) AS
BEGIN SELECT *
FROM geek.geektab
WHERE id = @id;
END;

运行 sp_get_id 存储过程:

EXEC sp_get_id 1; 

输出 –

id name address
1 Neha B-Wing, Delhi