Sqlserver
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Sqlserver

Cách đổi tên bảng trong SQL Server

Một trong những nhiệm vụ quan trọng nhất của quản trị viên cơ sở dữ liệu là quản lý các đối tượng cơ sở dữ liệu. Ví dụ:logic ứng dụng thay đổi và các DBA có thể cần thay đổi tên đối tượng cơ sở dữ liệu. Nhiệm vụ này rất quan trọng vì chúng tôi phải đảm bảo rằng việc đổi tên sẽ không phá vỡ ứng dụng.

Gần đây tôi đã được giao một dự án mà tôi phải đổi tên một vài bảng. Ở đây, tôi sẽ giải thích cách đổi tên bảng SQL Server theo một số cách.

Chúng ta có thể đổi tên bảng bằng:

  1. Studio quản lý SQL Server.
  2. sp_rename thủ tục được lưu trữ.

Ngoài ra, tôi sẽ đề cập đến các lỗi tiềm ẩn có thể xảy ra sau khi đổi tên bảng và các biện pháp phòng ngừa cần thiết. Bài viết này là hướng demo, vì vậy tôi đã tạo các đối tượng sau trên phiên bản SQL Server:

  1. Cơ sở dữ liệu có tên StudentDB .
  2. Hai bảng có tên tblSchool tblStudent .
  3. Khoá ngoại giữa tblSchool tblStudent . tblSchool là bảng mẹ và tblStudent là một bảng con.
  4. Một thủ tục được lưu trữ có tên sp_getStudents .
  5. Chế độ xem có tên vwStudents .

Các mã T-SQL được áp dụng để tạo các đối tượng cơ sở dữ liệu trên như sau:

Tạo cơ sở dữ liệu:

Create database [StudentDB]
Go

Tạo bảng và khóa ngoại:

Use [StudentDB]
Go
CREATE TABLE [dbo].[tblSchool](
	[School_ID] [int] IDENTITY(1,1) NOT NULL,
	[School_Name] [varchar](500) NULL,
	[City] [varchar](50) NULL,
 CONSTRAINT [PK_tblSchool] PRIMARY KEY CLUSTERED 
(
	[School_ID] ASC
)
) ON [PRIMARY]
GO
CREATE TABLE [dbo].[tblStudent](
	[ID] [int] IDENTITY(1,1) NOT NULL,
	[student_name] [varchar](250) NOT NULL,
	[student_code] [varchar](5) NOT NULL,
	[student_grade] [char](2) NOT NULL,
	[SchoolID] [int] NOT NULL,
 CONSTRAINT [PK_tblStudent] PRIMARY KEY CLUSTERED 
(
	[ID] ASC
))
GO

ALTER TABLE [dbo].[tblStudent]  WITH CHECK ADD  CONSTRAINT [FK_tblStudent_tblSchool] FOREIGN KEY([SchoolID])
REFERENCES [dbo].[tblSchool] ([School_ID])
GO
ALTER TABLE [dbo].[tblStudent] CHECK CONSTRAINT [FK_tblStudent_tblSchool]
GO

Sơ đồ E-R của tblSchool và tblStudent:

Chèn dữ liệu giả vào bảng:

INSERT INTO tblschool
            (school_name,
             city)
VALUES     ('Nalanda School',
            'Mehsana'),
            ('Sarvajanik School',
             'Mehsana')
go
INSERT INTO tblstudent
            (student_name,
             student_code,
             student_grade,
             schoolid)
VALUES      ('Nisarg Upadhyay',
             'ST001',
             'A ',
             1),
            ('Dixit Upadhyay',
             'ST002',
             'A ',
             1),
            ('Bharti Upadhyay',
             'ST003',
             'C',
             2),
            ('Nimesh Patel',
             'ST004',
             'C',
             2),
            ('Raghav Dave',
             'ST005',
             'A',
             1)
go  

Tạo một thủ tục được lưu trữ:

USE studentdb
go
CREATE PROCEDURE Sp_getstudent
AS
  BEGIN
      SELECT id,
             student_code,
             student_name,
             student_grade,
             school_name,
             city
      FROM   tblstudent a
             INNER JOIN tblschool b
                     ON a.schoolid = b.school_id
  END

Tạo chế độ xem:

use StudentDB
go
create view vwStudents
as
select student_code [Student Code],
student_name [Student Name],
student_grade [Student Grade],
School_Name [School Name],
City [City]
from tblStudent a inner join tblSchool b on  a.SchoolID=b.School_ID

Đổi tên bảng bằng lệnh sp_rename

Chúng tôi có thể sử dụng sp_rename thủ tục được lưu trữ để đổi tên bất kỳ đối tượng nào của cơ sở dữ liệu SQL Server (đừng nhầm lẫn với toán tử máy chủ sql thay đổi bảng làm thay đổi dữ liệu trong bảng). Cú pháp như sau:

Exec sp_rename ‘schema_name.old_name’,’schema_name.new_name’
  1. Schema_name.old_name là tên của bảng mà bạn muốn thay đổi.
  2. Schema_name.new_name là tên mới.

Bây giờ, chúng ta hãy đổi tên thành tblStudent bảng cho tbl_Students .

Use StudentDB
go
Exec sp_rename 'tblStudent','tbl_Students'
Go

Đầu ra là:

Caution: Changing any part of an object name could break scripts and stored procedures.

Thông báo cho biết rằng tên của bảng đã được thay đổi thành công.

Bây giờ chúng ta hãy xem cách chúng ta có thể thay đổi tên bảng bằng SQL Server Management studio.

Cách thay đổi tên bảng trong SQL Server Management Studio (SSMS)

Để đổi tên bảng, hãy mở SQL Server Management Studio> Kết nối với phiên bản SQL Server> Mở rộng cơ sở dữ liệu> Mở rộng bảng> Nhấp chuột phải vào tblSchool> Đổi tên . Hoặc, chỉ cần nhấp vào tblSchool.

Chỉ định tên mới và nhấn Enter .

Sau khi tên được thay đổi, bạn có thể chạy truy vấn sau để xác minh:

Như bạn có thể thấy, tên của bảng đã được thay đổi. Cũng lưu ý rằng ngày sửa đổi của bảng đã được cập nhật và ngày mới là dấu thời gian khi bảng được sửa đổi .

Những điều cần quan tâm trước khi thay đổi tên bảng trong MSSQL

Sau khi thay đổi tên bảng của tblStudent tblSchool , hãy để chúng tôi chạy quy trình được lưu trữ có tên sp_getstudent :

Use StudentDB
Go
Exec sp_getstudent
Go

Đầu ra

Msg 208, Level 16, State 1, Procedure sp_getstudent, Line 4 [Batch Start Line 15]
Invalid object name 'tblStudent'.

Lỗi chỉ ra rằng đối tượng được sử dụng trong dạng xem bị thiếu.

Bây giờ, chúng ta hãy chạy truy vấn sau để xem dữ liệu từ vwStudents :

Use StudentDB
Go
Select * from vwStudents
Go

Đầu ra

Msg 208, Level 16, State 1, Procedure vwStudents, Line 8 [Batch Start Line 16]
Invalid object name 'tblStudent'.
Msg 4413, Level 16, State 1, Line 17
Could not use view or function 'vwStudents' because of binding errors.

Lỗi chỉ ra rằng truy vấn được sử dụng để tạo chế độ xem không thể tìm thấy các bảng có tên tblStudent .

Để tránh những lỗi như vậy sau khi thay đổi tên của bảng, chúng ta phải kiểm tra danh sách các đối tượng cơ sở dữ liệu phụ thuộc vào bảng.

Bảng quy trình đổi tên bảng phải như sau:

  1. Thay đổi tên của bảng.
  2. Thay đổi tên của bảng trong thủ tục Đã lưu trữ, chế độ xem, truy vấn Ad-Hoc và các đối tượng khác.

Để tìm danh sách các đối tượng phụ thuộc trên bảng cụ thể, bạn có thể chạy sp_depends thủ tục được lưu trữ. Cú pháp là:

exec sp_depends [obj_name]

Để tìm danh sách các đối tượng phụ thuộc vào tblStudent bảng, hãy chạy truy vấn sau:

use studentDB
go
exec sp_depends [vwStudents]

Hết:

Lưu ý: Đảm bảo rằng bạn chạy quy trình này trước khi đổi tên bảng. Nếu không, truy vấn sẽ trả về NULL làm đầu ra.

Tóm tắt

Bài viết này giải thích cách chúng tôi có thể sử dụng sp_rename thủ tục được lưu trữ và SQL Server Management Studio để thay đổi tên của bảng. Hơn nữa, chúng tôi đã xác định các lỗi tiềm ẩn có thể xảy ra sau khi đổi tên bảng và các biện pháp phòng ngừa phải thực hiện sau khi đổi tên bảng. Để đối phó tốt hơn với các bảng trong máy chủ SQL, hãy đọc thêm cách sử dụng câu lệnh bảng thả trong máy chủ sql.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. “Đảo ngược hàng” trong SQL Server là gì?

  2. Ngăn chặn việc lưu các thay đổi yêu cầu tạo lại bảng có ảnh hưởng tiêu cực

  3. Tại sao kiểu DATETIME của SQL Server tiết kiệm thời gian trong tích tắc 1/300 giây?

  4. Chèn trình kích hoạt Cập nhật cách xác định xem chèn hoặc cập nhật

  5. Tìm thứ tự nút trong tài liệu XML trong SQL Server