你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
PostgreSQL 扩展中的“编辑数据”功能会将表从对象资源管理器打开到可编辑的网格中。 您可以直接修改值、添加或删除行、以 SQL 形式查看每项待处理的更改,然后将这些更改保存回数据库。 编辑数据在Visual Studio Code和游标中以相同的方式运行。
何时使用编辑数据
在需要执行以下操作时,使用 编辑数据:
- 更正或更新少量行而不手动写入
UPDATE或INSERT语句, - 检查表并使用适合每列的编辑器快速进行类型感知更改,或者
- 在提交之前,请先查看这一组编辑操作生成的 SQL。
Tip
编辑数据 最适合小型目标行更改。 对于批量更改、复杂筛选器或脚本化更新,请改为在查询编辑器中编写 SQL。 使用 对象资源管理器 编写脚本或打开表的查询。
先决条件
在编辑表数据之前,请确保具备:
- 与目标 PostgreSQL 数据库的活动连接,以及
- 具有主键的表。 编辑数据需要主键来标识每一行,因此没有主键的表将以只读方式打开。 您可以查看其中的行,但不能更改。
打开编辑器
- 在 “连接 ”树中,展开数据库,然后展开其架构(例如 公共),然后展开 “表” 文件夹。 如果关闭 按架构分组,“表” 文件夹则会直接显示在数据库下方。
- 右键单击要更改的表。
- 选择 “编辑数据”。
该扩展将打开标题 <schema>.<table> - Edit Data 为(例如 public.models - Edit Data)的 Web 视图,并将表的行加载到网格中。 加载的行数受 行限制设置限制。
编辑单元格
该网格显示表格中的各行,并在每行上显示状态标记,以便你区分未修改的行与已更改、已添加或已标记为删除的行。 每一列都使用可识别数据类型的编辑器,因此可为相应的数据提供合适的控件:
- 文本和数字列可像电子表格一样进行编辑。 开始键入以替换值,或按 Enter 或 F2 进行就地编辑。
- “布尔值”列显示 true/false/NULL 切换开关。 使用箭头键在选项和 Enter 之间移动以提交。
- 按 Enter 键或 F2 键时,“枚举”列将打开类型有效值的下拉列表。
- 日期和时间列使用原生日期/时间选择器或纯文本,具体取决于日期/时间编辑器设置。
- NULL 和可为 NULL 的列都会显式处理,因此可以明确地设置或清除某个值。
更改某个单元格后,该行的状态标记会切换为挂起(脏污)状态,并显示“保存”和“放弃更改”栏。
对于长文本或 JSON 值,请打开扩展编辑器,以获得更宽敞、支持语言感知的编辑界面,而非局限于单个狭小的单元格。 打开单元格的编辑器,选择展开控件以在较大的 编辑单元格 编辑器中打开值,进行更改,然后选择 “应用”。
添加或删除行
使用工具栏更改表格包含哪些行:
- 添加行 会创建一个新的未保存行,其中预填充了任何服务器端默认值,并将你移动到其第一个可编辑单元格中。
- Delete 将标记所选现有行进行删除。 在您保存前,该行会继续显示,并带有删除标记。 删除未保存的新行后,该行会立即被删除。
- 还原行 将放弃所选行中的待定更改。 编辑的行返回其上次保存的值,并删除未保存的新行。
每个操作都尊重表的权限。 如果不能在表上插入或删除行,或者该表是只读的,匹配操作将保持禁用状态。
查看和保存更改
当有待处理的更改时,更改栏会一直显示,其中会显示待处理内容的摘要,以及 预览更改、保存 和 放弃 操作。 在没有未决更改之前,刷新将被禁用,因此重新加载绝不会在没有提示的情况下丢失你所做的编辑。
选择 预览更改 以打开审阅窗格,其中按操作分组列出了待处理的 INSERT、UPDATE 和 DELETE 语句。 当连接可以呈现值时,窗格会显示确切的 SQL。 否则,它会显示具有单独列出的绑定值的参数化语句。 保存操作在单个事务中运行语句。 在该窗格中,您可以:
- 复制 SQL 以将待执行语句复制到剪贴板,或
- “在查询编辑器中打开”,用于在已连接到该表所在服务器和数据库的查询编辑器中打开同一 SQL,以便自行调整或运行。
确认更改无误后,请选择“保存”以将所有待定更改提交到数据库,或选择“丢弃”以撤销所有更改。 仅当存在待处理的更改且该表可写时,这两个操作才可用。
Settings
编辑数据有三个设置。 在用户或工作区设置中进行设置 - 搜索 pgsql.editData - 或者直接在 settings.json 中编辑它们。
| 设置 | Default | 说明 |
|---|---|---|
pgsql.editData.rowLimit |
200 |
编辑表数据时要加载的最大行数。 |
pgsql.editData.dateTimeEditor |
native |
控制“编辑数据”在日期和时间单元格中使用原生日期/时间输入控件(native)还是纯文本输入控件(text)。 使用 native时,时区感知时间戳仍使用纯文本。 |
pgsql.editData.tabPastLastCell |
addRow |
控制当您按 Tab 键前进并越过最后一个可编辑单元格时会发生什么:addRow 会创建新行并打开其第一个单元格,stop 会提交该单元格并停在网格末尾。 |
权限和要求
- 主密钥。 进行编辑操作需要主键来唯一标识每一行。 表格如果缺少该项,将以只读方式打开。 在主键列中更改值时,编辑数据会要求你在保存之前进行确认。
- 列和表权限。 编辑数据时会进行权限感知。 无法编辑只读列,当角色无法在表上执行这些列时, “添加行”、“ 删除”和 “保存 ”操作将保持禁用状态。