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

Lược đồ ràng buộc với chức năng cột được tính

Không thể thêm chỉ mục trên một cột được tính toán, trừ khi nó mang tính xác định.

"Các hàm xác định luôn trả về cùng một kết quả bất kỳ khi nào chúng được gọi với một tập giá trị đầu vào cụ thể và được cung cấp cùng một trạng thái của cơ sở dữ liệu. Các hàm không xác định có thể trả về các kết quả khác nhau mỗi khi chúng được gọi với một tập giá trị đầu vào cụ thể ngay cả khi trạng thái cơ sở dữ liệu mà họ truy cập vẫn như cũ. "

Ví dụ:

CREATE FUNCTION dbo.FuncA()
RETURNS [float]
WITH SCHEMABINDING    -- required option
BEGIN
  RETURN 1.0   -- DB engine parses body, and marks this func. as 'deterministic'
END
GO

CREATE TABLE TableA (
  K int primary key clustered,
  A AS dbo.FuncA() PERSISTED    -- must be persisted
)
GO

CREATE VIEW ViewA
WITH SCHEMABINDING    -- required option
AS
  SELECT K, A FROM dbo.TableA
GO

CREATE UNIQUE CLUSTERED INDEX IDX1 ON dbo.ViewA (K, A)
GO

Bạn phải chỉ định PERSISTED cho các loại dữ liệu không chính xác như [real][float] , trong trường hợp khác, bạn có thể thoải mái tạo chỉ mục trên dạng xem có cột được tính toán ([số thập phân] sẽ được).




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Làm thế nào để nhận Tổng của tất cả các giá trị cột trong hàng cuối cùng của tập kết quả?

  2. T-SQL:Xuất sang tệp Excel mới

  3. Chuyển tập hợp kết quả SQL Server thành chuỗi

  4. Điều gì sai với phép tính phân chia truy vấn SQL Server này?

  5. Điều gì xảy ra với Id khóa chính khi nó vượt quá giới hạn?