0

こんにちは私は現在、MicrosoftSQLServerを使用するRails2プロジェクトに取り組んでいます。バックグラウンドプロセスを可能にするdelayed_jobgemを実装しようとしています。これを行うには、移行時に次のようなテーブルを作成する必要があります。

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つの日時列があることに注意してください。ただし、SQLServer構文を使用して純粋な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 Schools について言及すると、釘付けになるでしょう。:-) それは悪のサイトです。とにかく、必要な数のタイムスタンプ列を持つことができます。これらは、システム時間または必要なその他のタイムスタンプを保持できます。制限はありません。

インデックスには、次を使用します。

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 に答える