Rumah > pangkalan data > tutorial mysql > Apakah SQL Server Setara dengan ROWID Oracle?

Apakah SQL Server Setara dengan ROWID Oracle?

Barbara Streisand
Lepaskan: 2024-12-25 16:43:14
asal
597 orang telah melayarinya

What is the SQL Server Equivalent of Oracle's ROWID?

Setara dengan RowID Oracle dalam SQL Server

Pseudocolumn ROWID dalam Oracle secara unik mengenal pasti setiap baris dalam jadual dan mengandungi maklumat tentang lokasinya dalam pangkalan data. Dalam SQL Server, setara yang paling hampir dengan ROWID ialah rid, yang mempunyai tiga komponen: Fail, Halaman dan Slot.

Untuk mendapatkan penghapusan, anda boleh menggunakan lajur maya %%physloc%% yang tidak didokumenkan dan tidak disokong , yang mengembalikan nilai binari(8) dengan ID Halaman dalam empat bait pertama, ID Fail dalam dua bait seterusnya dan Lokasi slot dalam dua bait terakhir bait.

Anda boleh menggunakan fungsi sys.fn_PhysLocFormatter atau sys.fn_PhysLocCracker untuk menukar nilai binari ini kepada format yang lebih mudah dibaca:

CREATE TABLE T(X INT);
INSERT INTO T VALUES(1),(2)

SELECT %%physloc%% AS [%%physloc%%],
       sys.fn_PhysLocFormatter(%%physloc%%) AS [File:Page:Slot]
FROM T
Salin selepas log masuk

Output:

+--------------------+----------------+
|    %%physloc%%     | File:Page:Slot |
+--------------------+----------------+
| 0x2926020001000000 | (1:140841:0)   |
| 0x2926020001000100 | (1:140841:1)   |
+--------------------+----------------+
Salin selepas log masuk

Perhatikan bahawa SQL Server tidak memanfaatkan penyingkiran dalam pemprosesan pertanyaan, jadi gunakan %%physloc%% dalam klausa WHERE akan menghasilkan imbasan jadual penuh.

Untuk menukar nilai Fail, Halaman dan Slot kembali kepada perwakilan binari(8), gunakan:

DECLARE @FileId int = 1,
        @PageId int = 338,
        @Slot   int = 3

SELECT CAST(REVERSE(CAST(@PageId AS BINARY(4))) AS BINARY(4)) +
       CAST(REVERSE(CAST(@FileId AS BINARY(2))) AS BINARY(2)) +
       CAST(REVERSE(CAST(@Slot   AS BINARY(2))) AS BINARY(2))
Salin selepas log masuk

Atas ialah kandungan terperinci Apakah SQL Server Setara dengan ROWID Oracle?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan