`ptz_id` varchar(50) COLLATE utf8_bin DEFAULT NULL,解析 mysql中字段设置
时间: 2024-05-27 12:09:51 浏览: 15
`ptz_id` 是一个字段名,`varchar(50)` 表示该字段类型为可变长度字符串,最大长度为 50,`COLLATE utf8_bin` 表示该字段的字符集为 utf8,并且使用二进制比较规则,`DEFAULT NULL` 表示该字段的默认值为 NULL。这一段是在创建 MySQL 表时对该字段的设置。
相关问题
解析 DO $$ BEGIN IF NOT EXISTS (SELECT * FROM information_schema.columns WHERE table_schema = CURRENT_CATALOG AND table_name = 'sys_ptz_device' AND column_name = 'drive_serial') THEN alter table sys_ptz_device add COLUMN drive_serial varchar(255) COLLATE utf8_bin DEFAULT NULL; COMMENT ON COLUMN sys_ptz_device.drive_serial IS'硬盘序列号'; END IF; END $$;
这是一条 PostgreSQL 的 SQL 语句,用于给表 `sys_ptz_device` 添加一列 `drive_serial`,如果该列不存在的话。具体解析如下:
1. `DO $$ ... $$;` 表示一个匿名代码块,其中 `$$` 之间的内容是代码块的内容。
2. `BEGIN ... END` 表示代码块的开始和结束。
3. `IF NOT EXISTS (...)` 表示一个条件判断,如果括号中的条件成立,就执行 `THEN` 之后的语句。
4. `SELECT * FROM information_schema.columns WHERE table_schema = CURRENT_CATALOG AND table_name = 'sys_ptz_device' AND column_name = 'drive_serial'` 是一个查询语句,用于检查表 `sys_ptz_device` 是否存在列 `drive_serial`。
5. `ALTER TABLE sys_ptz_device ADD COLUMN drive_serial varchar(255) COLLATE utf8_bin DEFAULT NULL;` 是一个修改表结构的语句,用于向表 `sys_ptz_device` 添加一列 `drive_serial`,数据类型为 `varchar(255)`,默认值为 `NULL`。
6. `COMMENT ON COLUMN sys_ptz_device.drive_serial IS '硬盘序列号';` 是一个对表 `sys_ptz_device` 的列 `drive_serial` 添加注释的语句,注释内容为 `硬盘序列号`。
综上,这条 SQL 语句的作用是向表 `sys_ptz_device` 添加一列 `drive_serial`,并添加注释,如果该列不存在的话。
将mysql 创建的函数CREATE DEFINER=`root`@`localhost` PROCEDURE `delete_backend_detection`(IN deviceid VARCHAR(50), IN pkid1 INT(11)) BEGIN update `sys_ptz_device` set is_valid=3 where device_id=deviceid ; update `sys_ptz_conf` set device_id =null where device_id=deviceid; delete from `sys_backend_detection` where device_id=deviceid and pkid=pkid1; END修改成金仓函数
金仓数据库中创建存储过程的语法与MySQL有一些不同,需要进行一些修改。下面是修改后的代码:
```
CREATE PROCEDURE delete_backend_detection(IN deviceid VARCHAR(50), IN pkid1 INT)
AS
BEGIN
UPDATE sys_ptz_device SET is_valid = 3 WHERE device_id = deviceid;
UPDATE sys_ptz_conf SET device_id = NULL WHERE device_id = deviceid;
DELETE FROM sys_backend_detection WHERE device_id = deviceid AND pkid = pkid1;
END;
```
请注意,金仓数据库中不需要指定 DEFINER,也不需要使用分号作为语句的结束符。同时,INT 类型的长度在金仓中也不需要指定。
相关推荐
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)