0

您好我目前正在开发一个使用 Microsoft SQL Server 的 Rails 2 项目。我即将实现delayed_job gem,它允许后台进程。为此,我必须在迁移中创建一个如下所示的表:

class CreateDelayedJobs < ActiveRecord::Migration
  def self.up
    create_table :delayed_jobs, :force => true do |table|
      table.integer  :priority, :default => 0      # Allows some jobs to jump to the front of the queue
      table.integer  :attempts, :default => 0      # Provides for retries, but still fail eventually.
      table.text     :handler                      # YAML-encoded string of the object that will do work
      table.text     :last_error                   # reason for last failure (See Note below)
      table.datetime :run_at                       # When to run. Could be Time.zone.now for immediately, or sometime in the future.
      table.datetime :locked_at                    # Set when a client is working on this object
      table.datetime :failed_at                    # Set when all retries have failed (actually, by default, the record is deleted instead)
      table.string   :locked_by                    # Who is working on this object (if locked)
      table.timestamps
    end

    add_index :delayed_jobs, [:priority, :run_at], :name => 'delayed_jobs_priority'
  end

  def self.down
    drop_table :delayed_jobs  
  end
end

请注意,有 3 个日期时间列。但是,我必须使用 SQL Server 语法在纯 SQL 中执行此操作。根据 W3 学校:

timestamp   Stores a unique number that gets updated every time a row gets created or modified. The timestamp value is based upon an internal clock and does not correspond to real time. Each table may have only one timestamp variable

CREATE TABLE delayed_jobs
{
    id uniqueidentifier,
    priority int,
    attempts int,
    handler text,
    last_error text,
    run_at timestamp,
    locked_at timestamp,
    failed_at timestamp,
    locked_by varchar(255)
};
  1. 我怎样才能绕过这个单一的时间戳限制?
  2. 如何添加索引?
4

1 回答 1

1

只是提醒一下,你会因为在这里提到 W3 学校而被钉死。:-) 这是一个邪恶的网站。无论如何,您可以根据需要拥有尽可能多的时间戳列。它们可以保存系统时间或您想要的任何其他时间戳。没有限制。

对于索引,使用:

CREATE INDEX index_name
ON table_name (column_name)

或者

CREATE UNIQUE INDEX index_name
ON table_name (column_name)
于 2013-01-25T16:23:52.253 回答