virtual columns in mysql

source: drifting ruby eipsode87

场景:在数据库中创建一个字段,其他字段根据这个字段自动生成

MySQL5.7的sql代码如下:

CREATE TABLE triangle (
  sidea DOUBLE,
  sideb DOUBLE,
  sidec DOUBLE AS (SQRT(sidea * sidea + sideb * sideb))
);
INSERT INTO triangle (sidea, sideb) VALUES(1,1),(3,4),(6,8);

mysql> SELECT * FROM triangle;
+-------+-------+--------------------+
| sidea | sideb | sidec              |
+-------+-------+--------------------+
|     1 |     1 | 1.4142135623730951 |
|     3 |     4 |                  5 |
|     6 |     8 |                 10 |
+-------+-------+--------------------+

Rails中字段生成的方式如下:

rails g scaffold users name:string upper_name:virtual name_length:virtual
#migration.rb
class CreateUsers < ActiveRecord::Migration[5.1]
  def change
    create_table :users do |t|
      t.string :name
      t.virtual :upper_name, type: :string, as: "UPPER(name)"
      t.virtual :name_length, type: :integer, as: "LENGTH(name)", stored: true

      t.timestamps
    end
  end
end
#view
view中代码upper_name和name_length会自动生成,不用生成表单

results matching ""

    No results matching ""