Sqlserver
 sql >> Teknologi Basis Data >  >> RDS >> Sqlserver

Pengikatan Skema dengan Fungsi Kolom Terhitung

Tidak mungkin menambahkan indeks pada kolom yang dihitung, kecuali jika bersifat deterministik.

"Fungsi deterministik selalu mengembalikan hasil yang sama setiap kali dipanggil dengan sekumpulan nilai input tertentu dan diberi status database yang sama. Fungsi nondeterministik dapat mengembalikan hasil yang berbeda setiap kali dipanggil dengan set nilai input tertentu bahkan jika database menyatakan bahwa mereka mengakses tetap sama."

Contoh:

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

Anda harus menentukan PERSISTED untuk tipe data yang tidak tepat seperti [real] dan [float] , dalam kasus lain Anda dapat dengan bebas membuat indeks pada tampilan dengan kolom yang dihitung ([desimal] tidak masalah).




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Permintaan SQL untuk mendapatkan hasil dalam dua kolom saja

  2. Enkripsi Cadangan Basis Data SQL Server

  3. SQL Server SMO mengeluhkan DLL yang hilang

  4. Jalankan Query Dinamis dengan go in sql

  5. Pisahkan fungsi dengan koma di SQL Server 2008