Mysql 用UUID做主鍵可行麼

2023-09-01 03:04:11 字數 2151 閱讀 5639

1樓:匿名使用者

在mysql中可以把uuid作為邏輯主鍵,物理主鍵依然使用自增id

1、uuid定義。

uuid含義是通用唯一識別碼 (universally unique identifier),這 是一個軟體建構的標準,也是被開源軟體**會 (open software foundation, osf) 的組織應用在分散式計算環境 (distributed computing environment, dce) 領域的一部分。uuid是指在一臺機器上生成的數字,它保證對在同一時空中的所有機器都是唯一的。

2、uuid優點。

1) 能夠保證獨立性,程式可以在不同的資料庫間遷移,效果不受影響。

2) 保證生成的id不僅是表獨立的,而且是庫獨立的,這點在你想切分資料庫的時候尤為重要。

3) 在oracle做資料遷移的時候不會因為表的sequence不連續而出現問題。

3、uuid缺點。

2) 使用uuid後,url顯得冗長,不夠友好。

2樓:_____至尊寶

可以,但是你必須保證唯一性。

mysql建立資料庫時怎麼將主鍵設定為uuid,建表語句怎麼寫

3樓:趣職場

mysql設定uuid為主鍵需要先將資料。

型別設定為varchar(36),然後插入資料的。

時候用uuid函式插入uuid。下面我用win10系統下內的cmd命令列具體演示一容下:

1、開啟cmd,輸入mysql -uroot -p命令連線mysql,如下圖所示。

2、通過create建立表,指定id為varchar(36),並設定為主鍵,如下圖所示。

3、在插入資料的時候,呼叫uuid()函式往主鍵欄位裡插入uuid值,如下圖所示。

4、最後查詢插入的資料就可以看到id主鍵列存放的是uuid型別了,如下圖所示。

4樓:drank傾城

你們的想法是不是,想在建表時為id指定uuid,然後每次插入資料都會自動為每一條資料生成uuid呢?就像auto_increment主鍵自增一樣呢?

我只想說 you are too young!

我一開始是這樣做的:

create table product(

id varchar(36) primary key default uuid()

sql語句報錯。

後來查了查資料,發現mysql好像並不支援在建表時,為某一欄位指定預設函式值。但是在oracle資料庫中,卻支援這樣幹,也就可以實現插入資料時,自動生成uuid。

所以在mysql中只能在插入資料時,將uuid()函式值賦值給id欄位。

後來,我又想了一個方案,我可以去寫一個觸發器,每次在執行插入操作時,都為id欄位更新為uuid(),但是這種方式還是存在很多問題的,這裡就不說了。

最後說明一點(uuid適不適合作為主鍵):

uuid號稱“全球唯一”,實際上業務中一般不會只用一個uuid就保證某個欄位的唯一性,因為它並不能保證唯一性,uuid的組成:

mac地址+時間戳+自增序列,前兩個都可以修改,自增序列在不同機器本身就無法保證唯一。既然無法保證唯一,那麼沒有任何處理的情況下直接將uuid作為主鍵,顯然也是不合適的。

5樓:折柳成萌

那直接用語句創bai建就好了,唯。

du一約束可以理解為是zhi

主鍵create table test

id int primary key,name varchar(10),age int)

說明dao:其中primary key就是版主鍵,也就代權表此表中id欄位是唯一的,不可重複。

6樓:匿名使用者

1.作主鍵沒問題,且能確保唯一性;

2.位元組數有點過長,還是自增序列優勢明顯,特別是mysql 系列開始,主要改進acto_increment加鎖釋放的問題;

3.分innodb,還是myisam,若是innodb引擎,強烈反對,因為其是索引組織表,建立的每個非簇索引,都會帶上主鍵的,這樣佔用儲存空間更大,需要消耗更多記憶體和io;

還有一個好處,就是出現資料拆分儲存的時候,能達到全域性的唯一性,而自增序列需要通過另外2個引數輔助,若是同一例項上就無能為力;

用mysql寫case when的自定義函式要怎麼寫

mysql create function helloworld4 returns varchar 20 begin return hello world end query ok,0 rows affected 0.00 sec mysql select helloworld4 helloworl...

php怎麼連線mysql資料庫,用php如何連線MySQL資料庫,請寫出程式碼。 急!!!

1 新建一個php mysql.php的檔案2 檢視mysql服務是否開啟,或者客戶端的mysql能夠正常開啟。滑鼠右鍵我的電腦 管理 服務和應用程式 服務 找到mysql服務,看看是不是啟用狀態。也可以開啟執行,輸入 mysql u root 使用者名稱 p 123456 密碼 看看能不能開啟客戶...

用php建mysql表時怎麼設定表的編碼為gb

可以使用 default charset gb2312 設定編碼。例如 建立一個名字為table的表,編碼為gb2312。create table if not exists table id int 11 not null auto increment,title varchar 255 not ...