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

IDENTITY() vs IDENTITY() di SQL Server:Apa Bedanya?

Ini mungkin tampak aneh, tetapi T-SQL memiliki IDENTITY() properti dan IDENTITY() fungsi, yang masing-masing memiliki tujuan (serupa, tetapi) berbeda.

  • IDENTITY() properti membuat kolom identitas dalam tabel. Kolom identitas berisi nomor identifikasi yang bertambah secara otomatis. Properti ini digunakan dengan CREATE TABLE dan ALTER TABLE pernyataan.
  • IDENTITY() Namun, fungsi hanya digunakan dalam SELECT pernyataan dengan INTO klausa tabel untuk menyisipkan kolom identitas ke dalam tabel baru.

Ada juga Identity SQL-DMO properti yang mengekspos properti identitas baris dari sebuah kolom, tetapi saya tidak akan membahasnya di sini. Microsoft menyarankan bahwa properti ini akan dihapus dalam versi SQL Server yang akan datang, dan Anda harus menghindari menggunakannya dalam pekerjaan pengembangan baru.

IDENTITAS() Properti

Berikut ini contoh penggunaan IDENTITY() properti.

CREATE TABLE Pets (
    PetId int IDENTITY(1,1) PRIMARY KEY, 
    PetName varchar(255)
    );

Kode ini membuat tabel dengan dua kolom. Kolom pertama (PetId ) adalah kolom identitas (karena saya menggunakan IDENTITY() properti dalam definisinya).

Sekarang saya telah membuat kolom identitas, saya dapat memasukkan nama hewan peliharaan ke dalam PetName kolom tanpa perlu menyertakan ID untuk setiap baris.

INSERT INTO Pets (PetName)
VALUES ('Homer'), ('Felix'), ('Ruff');

SELECT * FROM Pet;

Hasil:

+---------+-----------+
| PetId   | PetName   |
|---------+-----------|
| 1       | Homer     |
| 2       | Felix     |
| 3       | Ruff      |
+---------+-----------+

Dalam hal ini, penomoran dimulai dari 1 dan setiap baris bertambah 1. Ini karena saya menggunakan IDENTITY(1,1) untuk menentukan bahwa nilai benih adalah 1 dan bertambah 1 pada setiap baris baru.

IDENTITY() Fungsi

Seperti disebutkan, IDENTITY() fungsi digunakan dalam SELECT INTO penyataan. Berikut ini contoh penggunaan IDENTITY() fungsi.

SELECT 
  IDENTITY(int, 101, 10) AS pet_id,
  PetName AS pet_name
INTO BestFriends
FROM Pets;

SELECT * FROM BestFriends;

Hasil:

+----------+------------+
| pet_id   | pet_name   |
|----------+------------|
| 101      | Homer      |
| 111      | Felix      |
| 121      | Ruff       |
+----------+------------+

Di sini, saya membuat tabel bernama BestFriends dan mengisinya dari Pets meja.

Dalam hal ini saya memulai hitungan pada 101 dan menambahkannya dengan 10. Perhatikan juga bahwa fungsi memerlukan argumen pertama untuk menentukan tipe data kolom.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Tingkatkan kinerja kueri SQL Server di tabel besar

  2. Sambungan berhasil dibuat dengan server, tetapi kemudian terjadi kesalahan selama jabat tangan pra-login

  3. Pentingnya log transaksi di SQL Server

  4. Membuat pemicu audit di SQL Server

  5. Kriteria Filter SQL dalam kriteria bergabung atau klausa mana yang lebih efisien