資料庫儲存更新過程中,會出現異常報錯,是否都應該在業務層面進行提前預防?比如類似查重,判空的操作

時間 2021-06-08 19:53:41

1樓:飛鳥

insert ....on duplicate key 或者 replace into也許是你要的?

Server version: 8.0.17 MySQL Community Server - GPL

Oracle is a registered trademark of Oracle Corporation and/or its

affiliates. Other names may be trademarks of their respective

owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> create table t001 (id int not null default 0 unique key,name varchar(10) not null default '');

Query OK, 0 rows affected (0.17 sec)

mysql> insert into t001 (id,name) values (1,'lining') on duplicate key update name='lining';

Query OK, 1 row affected (0.06 sec)

mysql> insert into t001 (id,name) values (1,'lining1') on duplicate key update name='lining1';

Query OK, 2 rows affected (0.06 sec)

mysql> select * from t001id | name1 | lining11 row in set (0.07 sec)

mysql> insert into t001 (id,name) values (2,'lining2') on duplicate key update name='lining2';

Query OK, 1 row affected (0.06 sec)

mysql> select * from t001id | name1 | lining1 |

| 2 | lining22 rows in set (0.05 sec)

mysql> replace into t001 (id,name) values (2,'li');

Query OK, 2 rows affected (0.06 sec)

mysql> select * from t001id | name1 | lining1 |

| 2 | li2 rows in set (0.05 sec)

mysql>

2樓:行者無疆

你想問的應該是約束,常見的有主外來鍵約束。

將某個欄位上新增唯一約束,那麼就保證了資料的唯一性。這個是在資料庫層面做的。資料庫端還支援其他的約束,非空,check等等。

一般唯一,非空約束可以在資料庫層面做,因為邏輯簡單。其他複雜的約束建議在業務層面做,通過業務層來保證資料一致性,避免過多資料校驗帶來的效能開銷和維護的複雜度。

資料庫儲存資料的時候,相同資料分表 分庫的優劣是什麼?

jeff 1.為什麼分庫分表 單個表的資料量過大的時候,會影響操作的效能,這是最直接的原因。對於mysql 來說,單個表的達到多大的資料量才會影響效能,跟資料熱度和設計都有關係。如果是流水式的表,也就是歷史資料很少會更新或者查詢,乙個表上億的記錄數影響都不大,如果是innodb 表最好是自增主鍵,插...

雲資料庫對比傳統資料庫好在哪?

這是哪個雲廠商又來搞運營話題了嗎?凡事有利必有弊,需要根據自己的情況選擇合適自己的。正式一點來說,雲資料庫省掉了機房 機器 安裝 調優 運維等等下幾路的基礎工作,外包給別人了,而且擴容 縮容之類的工作也都可能外包了。可是,這個外包並不總是比自己靠譜。而且還有服務響應速度,資料安全保密,是否跟你有競爭...

在分布式資料庫儲存中,資料分割槽和資料放置有什麼區別?

楊東東 資料分割槽和資料放置是邏輯和物理的關係,邏輯是頂層設計,物理是具體實現,邏輯設計決定物理實現,物理約束反過來影響邏輯設計。舉個例子,給你10個桌球,要求放入3個盒子裡。如何決定哪個球放入哪個盒子?比如 按照編號大小 0 2放入盒子A,3 5放入盒子B,6 9放入盒子C 按照編號特徵 對3取餘...