μ΄ κΈ°λ₯μ μ¬μ©νλ €λ©΄ drizzle-orm@0.32.0 μ΄μ λ° drizzle-kit@0.23.0 μ΄μμ΄ νμν©λλ€
Sequences
PostgreSQLμ μνμ€(Sequence)λ κ³ μ μλ³μλ₯Ό μμ±νκΈ° μν΄ λ§λ€μ΄μ§ νΉμν λ¨μΌ ν ν μ΄λΈλ‘, μ£Όλ‘ μλ μ¦κ°νλ κΈ°λ³Έ ν€ κ°μ μ¬μ©λ©λλ€. μ¬λ¬ μΈμ μμ κ³ μ ν μμ°¨ κ°μ μμ±νλ μ€λ λ μμ ν λ°©λ²μ μ 곡ν©λλ€.
μ£Όμ κΈ°λ₯
-
μμ± λ° μ΄κΈ°ν: CREATE SEQUENCEλ₯Ό μ¬μ©νμ¬ μ μνμ€λ₯Ό μμ±ν©λλ€. μ¦κ° κ°, μμ κ°, μ΅μ/μ΅λ κ°, μΊμ ν¬κΈ°μ κ°μ λ§€κ°λ³μλ₯Ό μ§μ ν μ μμ΅λλ€.
-
μ‘°μ ν¨μ
nextval('sequence_name'): μνμ€λ₯Ό μ§νμν€κ³ λ€μ κ°μ λ°νν©λλ€.currval('sequence_name'): νμ¬ μΈμ μ μνμ€ νμ¬ κ°μ λ°νν©λλ€.setval('sequence_name', value): μνμ€μ νμ¬ κ°μ μ€μ ν©λλ€.lastval(): νμ¬ μΈμ μμ nextvalμ΄ λ°νν λ§μ§λ§ κ°μ λ°νν©λλ€.
-
μμ κΆ: OWNED BY μ μ μ¬μ©νμ¬ μνμ€λ₯Ό ν μ΄λΈ 컬λΌμ μ°κ²°ν μ μμ΅λλ€. ν μ΄λΈμ΄λ 컬λΌμ μμ νλ©΄ μ°κ²°λ μνμ€λ μλμΌλ‘ μμ λ©λλ€.
-
μν: CYCLE μ΅μ μ μ¬μ©νμ¬ μνμ€κ° μ΅λκ° λλ μ΅μκ°μ λλ¬νμ λ μννλλ‘ μ€μ ν μ μμ΅λλ€. κΈ°λ³Έκ°μ NO CYCLEμ λλ€.
-
μΊμ±: CACHE μ΅μ μ μ¬μ©νμ¬ μ±λ₯ ν₯μμ μν΄ μνμ€ κ°μ 미리 ν λΉν μ μμ΅λλ€.
μ νμ¬ν
- κ°κ²©: μνμ€λ μ°μμ μ΄μ§ μμ΅λλ€. μ€λ¨λ νΈλμμ μ΄λ μΆ©λλ‘ μΈν΄ μνμ€ κ°μ κ°κ²©μ΄ μκΈΈ μ μμ΅λλ€.
- λμμ±: μνμ€λ μΈμ κ° κ³ μ ν κ°μ μ 곡νμ§λ§, λͺ¨λ μΈμ μ κ³ λ €ν λ κ°μ΄ μμλλ‘ λμ€μ§ μμ μ μμ΅λλ€.
- λ‘€λ°± λΆκ°: νΈλμμ μ΄ μ€ν¨ν΄λ μνμ€μ λ³κ²½μ¬νμ λ‘€λ°±λμ§ μμ΅λλ€. μ΄λ κ³ μ ν κ°μ 보μ₯νμ§λ§ κ°κ²©μ΄ μκΈΈ μ μμ΅λλ€.
- μΆ©λ 볡ꡬ: λ‘κ·Έλμ§ μμ μνμ€λ μΆ©λ μ΄μ μ μμ λ μνμ€λ μ΄μ μνλ‘ μ λλ‘ λ³΅μλμ§ μμ μ μμ΅λλ€.
μ€μ μ¬μ©
- κΈ°λ³Έ λμ: κΈ°λ³Έμ μΌλ‘ μνμ€λ 1μ© μ¦κ°νκ³ 1λΆν° μμν©λλ€.
- μ¬μ©μ μ μ λμ: μ¬μ©μ μ μ μμμ , μ¦κ°κ°, μ΅μ/μ΅λ κ°, μνμ μ§μ ν μ μμ΅λλ€.
- μ°κ²°: μΌλ°μ μΌλ‘ μλ μ¦κ° νλλ₯Ό μν΄ ν μ΄λΈ 컬λΌκ³Ό μ°κ²°λμ΄ κ³ μ μλ³μ κ΄λ¦¬λ₯Ό μννκ² ν©λλ€.
μ¬μ© μμ
import { pgSchema, pgSequence } from "drizzle-orm/pg-core";
// No params specified
export const customSequence = pgSequence("name");
// Sequence with params
export const customSequence = pgSequence("name", {
startWith: 100,
maxValue: 10000,
minValue: 100,
cycle: true,
cache: 10,
increment: 2
});
// Sequence in custom schema
export const customSchema = pgSchema('custom_schema');
export const customSequence = customSchema.sequence("name");