Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Berlaku untuk:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Database SQL di Microsoft Fabric
Kolom komputasi adalah kolom virtual yang tidak disimpan secara fisik dalam tabel, kecuali kolom ditandai PERSISTED. Ekspresi kolom komputasi dapat menggunakan data dari kolom lain untuk menghitung nilai kolom tempat kolom tersebut berada. Anda dapat menentukan ekspresi untuk kolom komputasi di SQL Server dengan menggunakan SQL Server Management Studio (SSMS) atau Transact-SQL (T-SQL).
Limitations
Kolom terhitung tidak dapat digunakan sebagai definisi batasan
DEFAULTatauFOREIGN KEYatau dengan definisi batasanNOT NULL. Namun, jika nilai kolom komputasi ditentukan oleh ekspresi deterministik dan jenis data hasil diizinkan dalam kolom indeks, kolom komputasi dapat digunakan sebagai kolom kunci dalam indeks atau sebagai bagian dari salah satuPRIMARY KEYatauUNIQUEbatasan.Misalnya, jika tabel memiliki kolom
abilangan bulat danb, kolom komputasi yang didefinisikan sebagaia + bmungkin diindeks, tetapi kolom komputasi didefinisikan sebagaia + DATEPART(dd, GETDATE())tidak dapat diindeks, karena nilainya mungkin berubah dalam pemanggilan berikutnya.Kolom komputasi tidak dapat menjadi target pernyataan INSERT atau UPDATE.
SET QUOTED_IDENTIFIERharusONsaat Anda membuat atau mengubah indeks pada kolom komputasi atau tampilan terindeks. Untuk informasi selengkapnya, lihat SET QUOTED_IDENTIFIER (Transact-SQL).
Permissions
Memerlukan izin UBAH pada tabel.
Menggunakan SQL Server Management Studio
Menambahkan kolom komputasi baru
Di Object Explorer, perluas tabel yang ingin Anda tambahkan kolom komputasi baru. Klik kanan Kolom dan pilih Kolom Baru.
Masukkan nama kolom dan terima jenis data default (nchar(10)). Mesin Database menentukan jenis data kolom komputasi dengan menerapkan aturan tipe data yang diutamakan ke ekspresi yang ditentukan dalam rumus. Misalnya, jika rumus mereferensikan kolom jenis uang dan kolom jenis int, kolom yang dihitung akan berjenis uang karena jenis data tersebut memiliki prioritas yang lebih tinggi. Untuk informasi selengkapnya, lihat Prioritas Tipe Data (Transact-SQL).
Di tab Properti Kolom, perluas Properti Spesifikasi Kolom Terkalkulasi.
Di properti anak (Rumus), masukkan ekspresi untuk kolom ini ke dalam sel grid di sebelah kanan. Misalnya, dalam kolom
SalesTotal, rumus yang Anda masukkan mungkinSubTotal+TaxAmt+Freight, yang menambahkan nilai dalam kolom ini ke setiap baris dalam tabel.Important
Saat rumus menggabungkan dua ekspresi dari jenis data yang berbeda, aturan untuk prioritas jenis data menentukan bahwa jenis data dengan prioritas yang lebih rendah dikonversi ke jenis data dengan prioritas yang lebih tinggi. Jika konversi bukan konversi implisit yang didukung, kesalahan
Error validating the formula for column column_name.akan dikembalikan.CASTGunakan fungsi atauCONVERTuntuk mengatasi konflik jenis data. Misalnya, jika kolom jenis nvarchar dikombinasikan dengan kolom jenis int, jenis bilangan bulat harus dikonversi ke nvarchar seperti yang ditunjukkan dalam rumus('Prod'+CONVERT(nvarchar(23),ProductID))ini . Untuk informasi selengkapnya, lihat CAST dan CONVERT (Transact-SQL).Tunjukkan apakah data dipertahankan dengan memilih Ya atau Tidak dari menu dropdown untuk properti anak Is Persisted.
Pada menu File , pilih Simpannama tabel.
Menambahkan definisi kolom komputasi ke kolom yang sudah ada
- Di Object Explorer, klik kanan tabel dengan kolom yang ingin Anda ubah dan perluas folder Kolom .
- Klik kanan kolom yang ingin Anda tentukan rumus kolom komputasinya dan pilih Hapus. Pilih OK.
- Tambahkan kolom baru dan tentukan rumus kolom komputasi dengan mengikuti prosedur sebelumnya untuk menambahkan kolom komputasi baru.
Menggunakan Transact-SQL
Menambahkan kolom komputasi saat membuat tabel
Contoh berikut membuat tabel dengan kolom terhitung yang mengalikan nilai dalam kolom QtyAvailable dengan nilai dalam kolom UnitPrice.
CREATE TABLE dbo.Products
(
ProductID int IDENTITY (1,1) NOT NULL
, QtyAvailable smallint
, UnitPrice money
, InventoryValue AS QtyAvailable * UnitPrice
);
-- Insert values into the table.
INSERT INTO dbo.Products (QtyAvailable, UnitPrice)
VALUES (25, 2.00), (10, 1.5);
-- Display the rows in the table.
SELECT ProductID, QtyAvailable, UnitPrice, InventoryValue
FROM dbo.Products;
-- Update values in the table.
UPDATE dbo.Products
SET UnitPrice = 2.5
WHERE ProductID = 1;
-- Display the rows in the table, and the new values for UnitPrice and InventoryValue.
SELECT ProductID, QtyAvailable, UnitPrice, InventoryValue
FROM dbo.Products;
Menambahkan kolom komputasi baru ke tabel yang sudah ada
Contoh berikut menambahkan kolom baru ke tabel yang dibuat dalam contoh sebelumnya.
ALTER TABLE dbo.Products ADD RetailValue AS (QtyAvailable * UnitPrice * 1.5);
Secara opsional, tambahkan argumen PERSISTED untuk menyimpan nilai komputasi secara fisik dalam tabel:
ALTER TABLE dbo.Products ADD RetailValue AS (QtyAvailable * UnitPrice * 1.5) PERSISTED;
Mengubah kolom yang sudah ada menjadi kolom komputasi
Contoh berikut memodifikasi kolom yang ditambahkan dalam contoh sebelumnya.
ALTER TABLE dbo.Products DROP COLUMN RetailValue;
GO
ALTER TABLE dbo.Products ADD RetailValue AS (QtyAvailable * UnitPrice * 1.5);
GO