mirror of
https://github.com/supabase/supabase.git
synced 2026-07-05 13:14:36 +08:00
97 lines
2.2 KiB
Plaintext
97 lines
2.2 KiB
Plaintext
---
|
||
id: uuid-ossp
|
||
title: 'uuid-ossp: Unique Identifiers'
|
||
description: A UUID generator for PostgreSQL.
|
||
---
|
||
|
||
import Tabs from '@theme/Tabs'
|
||
import TabItem from '@theme/TabItem'
|
||
|
||
The `uuid-ossp` extension can be used to generate a `UUID`.
|
||
|
||
## Overview
|
||
|
||
A `UUID` is a "Universally Unique Identifer" and it is, for practical purposes, unique.
|
||
This makes them particularly well suited as Primary Keys. It is occasionally referred to as a `GUID`, which stands for "Globally Unique Identifer".
|
||
|
||
## Usage
|
||
|
||
### Enable the extension
|
||
|
||
<Tabs
|
||
defaultValue="dashboard"
|
||
values={[
|
||
{label: 'Dashboard', value: 'dashboard'},
|
||
{label: 'SQL', value: 'sql'},
|
||
]}>
|
||
|
||
<TabItem value="dashboard">
|
||
|
||
1. Go to the [Database](https://app.supabase.com/project/_/database/tables) page in the Dashboard.
|
||
2. Click on **Extensions** in the sidebar.
|
||
3. Search for "uuid-ossp" and enable the extension.
|
||
|
||
**Note**:
|
||
Currently `uuid-ossp` extension is enabled by default and cannot be disabled.
|
||
|
||
</TabItem>
|
||
<TabItem value="sql">
|
||
|
||
```sql
|
||
-- Example: enable the "uuid-ossp" extension
|
||
create extension "uuid-ossp" with schema extensions;
|
||
|
||
-- Example: disable the "uuid-ossp" extension
|
||
drop extension if exists "uuid-ossp";
|
||
```
|
||
|
||
Even though the SQL code is `create extension`, this is the equivalent of "enabling the extension".
|
||
To disable an extension, call `drop extension`.
|
||
|
||
It's good practice to create the extension within a separate schema (like `extensions`) to keep your database clean.
|
||
|
||
**Note**:
|
||
Currently `uuid-ossp` extension is enabled by default and cannot be disabled.
|
||
|
||
</TabItem>
|
||
|
||
</Tabs>
|
||
|
||
### The `uuid` type
|
||
|
||
Once the extension is enabled, you now have access to a `uuid` type.
|
||
|
||
### `uuid_generate_v1()`
|
||
|
||
Creates a UUID value based on the combination of computer’s MAC address, current timestamp, and a random value.
|
||
|
||
### `uuid_generate_v4()`
|
||
|
||
Creates UUID values based solely on random numbers.
|
||
|
||
## Examples
|
||
|
||
### Within a query
|
||
|
||
```sql
|
||
select uuid_generate_v4();
|
||
```
|
||
|
||
### As a Primary Key
|
||
|
||
Automatically create a unique, random ID in a table:
|
||
|
||
```sql
|
||
create table contacts (
|
||
id uuid default uuid_generate_v4(),
|
||
first_name text,
|
||
last_name text,
|
||
|
||
primary key (id)
|
||
);
|
||
```
|
||
|
||
## Resources
|
||
|
||
- [The Basics Of PostgreSQL `UUID` Data Type](https://www.postgresqltutorial.com/postgresql-uuid/)
|