locking.go 773 B

1234567891011121314151617181920212223242526272829303132333435363738
  1. package clause
  2. const (
  3. LockingStrengthUpdate = "UPDATE"
  4. LockingStrengthShare = "SHARE"
  5. LockingOptionsSkipLocked = "SKIP LOCKED"
  6. LockingOptionsNoWait = "NOWAIT"
  7. )
  8. type Locking struct {
  9. Strength string
  10. Table Table
  11. Options string
  12. }
  13. // Name where clause name
  14. func (locking Locking) Name() string {
  15. return "FOR"
  16. }
  17. // Build build where clause
  18. func (locking Locking) Build(builder Builder) {
  19. builder.WriteString(locking.Strength)
  20. if locking.Table.Name != "" {
  21. builder.WriteString(" OF ")
  22. builder.WriteQuoted(locking.Table)
  23. }
  24. if locking.Options != "" {
  25. builder.WriteByte(' ')
  26. builder.WriteString(locking.Options)
  27. }
  28. }
  29. // MergeClause merge order by clauses
  30. func (locking Locking) MergeClause(clause *Clause) {
  31. clause.Expression = locking
  32. }