In MySQL, GIPK stands for generated invisible primary key. A GIPK is created whenever we create an InnoDB
table without explicitly defining a primary key and when we have GIPKs enabled.
To enable GIPKs, we need to set our sql_generate_invisible_primary_key
server system variable to ON
. By default this is set to OFF
, which means GIPKs are disabled by default.
Example
Here’s how to enable GIPKs:
SET sql_generate_invisible_primary_key = ON;
Result:
Query OK, 0 rows affected (0.00 sec)
GIPKs are now enabled.
Now if we create an InnoDB
table without a primary key, MySQL will automatically create one for us – a generated invisible primary key to be precise. The GIPK column is always called my_row_id
and it’s an AUTO_INCREMENT
column so that its value increments with each new row.
Note that the effects of sql_generate_invisible_primary_key
apply to tables using the InnoDB
storage engine only.
Checking the sql_generate_invisible_primary_key
Variable
We can verify whether or not GIPKs are enabled by selecting the sql_generate_invisible_primary_key
:
SELECT @@sql_generate_invisible_primary_key;
Result:
+--------------------------------------+ | @@sql_generate_invisible_primary_key | +--------------------------------------+ | 1 | +--------------------------------------+
In this case I got a value of 1
, which means ON
. Therefore GIPKs are enabled.