<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                [TOC] # 定義列的約束類型 為了確保表里的數據符合業務規則,您可以在列上定義約束。 約束定義在列上,可以限制列里存儲的值。當嘗試在該列上寫入或更新為違反約束定義的值時,會觸發一個錯誤并回滾這個操作;當嘗試在已有的表的列上加上一個跟現有數據相沖突的約束時,也會觸發一個錯誤并回滾這個操作。 ## 約束類型 下面以`ware`表和`cut`表為例,介紹 OceanBase 數據庫的約束類型。 ~~~ obclient>CREATE TABLE ware (w_id int , w_ytd decimal(12,2) , w_tax decimal(4,4) , w_name varchar(10) , w_street_1 varchar(20) , w_street_2 varchar(20) , w_city varchar(20) , w_state char(2) , w_zip char(9) , unique(w_name, w_city) , primary key(w_id) ); Query OK, 0 rows affected (0.09 sec) obclient>CREATE TABLE cust (c_w_id int NOT NULL , c_d_id int NOT NULL , c_id int NOT NULL , c_discount decimal(4, 4) , c_credit char(2) , c_last varchar(16) , c_first varchar(16) , c_middle char(2) , c_balance decimal(12, 2) , c_ytd_payment decimal(12, 2) , c_payment_cnt int , c_credit_lim decimal(12, 2) , c_street_1 varchar(20) , c_street_2 varchar(20) , c_city varchar(20) , c_state char(2) , c_zip char(9) , c_phone char(16) , c_since date , c_delivery_cnt int , c_data varchar(500) , index icust(c_last, c_d_id, c_w_id, c_first, c_id) , FOREIGN KEY (c_w_id) REFERENCES table_name1(w_id) , primary key (c_w_id, c_d_id, c_id) ); Query OK, 0 rows affected (0.10 sec) ~~~ * 非空約束(`NOT NULL`):不允許約束包含的列的值為`NULL`。 例如,`ware`表的`w_name`列類型后面有`NOT NULL`約束,表示業務約束每個倉庫必須有個名稱。 有非空約束的列,在`INSERT`語句中必須指明該列的值,除非該列還定義了默認值。例如,`cust`表的列`c_discount`定義了默認值`0.99`,即業務上每個人默認折扣是`0.99`。 * 唯一約束(`UNIQUE`):不允許約束包含的列的值有重復值,但是可以有多個`NULL`值。 例如,`ware`表的`(w_name, w_city)`列上有個唯一約束,表示每個城市里倉庫的名稱必須是不重復的。 * 主鍵約束(`PRIMARY KEY`):`NOT NULL`約束和唯一約束的組合。 例如,`ware`表和`cust`表都有個主鍵`w_id`和`c_id`,這兩列不允許為`NULL`并且必須是不重復的。 ~~~ obclient>CREATE TABLE cust (c_w_id int NOT NULL, c_d_id int NOT NULL, c_id int NOT NULL, c_discount decimal(4, 4), c_credit char(2), c_last varchar(16), c_first varchar(16), c_middle char(2), c_balance decimal(12, 2), c_ytd_payment decimal(12, 2), c_payment_cnt int, c_credit_lim decimal(12, 2), c_street_1 varchar(20), c_street_2 varchar(20), c_city varchar(20), c_state char(2), c_zip char(9), c_phone char(16), c_since date, c_delivery_cnt int, c_data varchar(500), index icust(c_last, c_d_id, c_w_id, c_first, c_id), FOREIGN KEY (c_w_id) REFERENCES table_name1(w_id), primary key (c_w_id, c_d_id, c_id) ); Query OK, 0 rows affected (0.10 sec) ~~~ * 外鍵約束(`FOREIGN KEY`):要求約束的列的值取自于另外一個表的主鍵列。 例如,`cust`表的`c_w_id`上有個外鍵約束引用了`ware`表的`w_id`列,表示業務上顧客歸屬的倉庫必須是屬于倉庫表里的倉庫。 OceanBase 數據庫默認開啟了外鍵約束檢查,外鍵約束檢查開關由租戶變量`foreign_key_checks`來控制。 默認情況下,約束創建后為啟用狀態。 **說明** 目前 OceanBase 數據庫不支持通過`ALTER TABLE`語句增加或修改約束,因此您需要在創建表時即確定好表的約束。 ## 關于時間列的默認時間設置 當列上有`NOT NULL`約束時,通常建議設置為默認值。當列類型是日期或時間類型時,可以設置默認值為數據庫當前時間。 示例:為表的時間列設置默認值,可以使用`sysdate`或`systimestamp`函數。 ~~~ obclient> CREATE TABLE t1( id bigint not null primary KEY , gmt_create datetime not null default current_timestamp , gmt_modified datetime not null default current_timestamp ); Query OK, 0 rows affected (0.07 sec) obclient> INSERT INTO t1(id) VALUES(1),(2),(3); Query OK, 3 rows affected (0.01 sec) Records: 3 Duplicates: 0 Warnings: 0 obclient> SELECT * FROM t1; +----+---------------------+---------------------+ | id | gmt_create | gmt_modified | +----+---------------------+---------------------+ | 1 | 2020-02-27 17:09:23 | 2020-02-27 17:09:23 | | 2 | 2020-02-27 17:09:23 | 2020-02-27 17:09:23 | | 3 | 2020-02-27 17:09:23 | 2020-02-27 17:09:23 | +----+---------------------+---------------------+ 3 rows in set (0.00 sec) ~~~
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看