GBase 8c
其他
文章

GBase 8c 模式搜索路径(一)

发表于2023-12-06 14:51:46101次浏览0个评论

限定名写起来很冗长,通常最好不要把特定模式名写到应用中。因此,表名通常被使用非限定名来引用,它只由表名构成。系统将沿着一条搜索路径来决定该名称指的是哪个表,搜索路径是一个进行查看的模式列表。搜索路径中第一个匹配的表将被认为是所需要的。如果在搜索路径中没有任何匹配,即使在数据库的其他模式中存在匹配的表名也将会报告错误。

在不同方案中创建命名相同的对象,使得编写每次都准确引用相同对象的查询变得复杂。这也使得用户有可能更改其他用户查询的行为。由于未经限定的名称在查询中以及在数据库内部的广泛使用,在search_path中增加一个方案实际上是信任所有在该方案中具有CREATE特权的用户。在运行一个普通查询时,恶意用户可以在你的搜索路径中能够夺取控制权并且执行任意SQL函数的对象,而这些事情就像是你在执行一样。

搜索路径中的第一个模式被称为当前模式。除了是第一个被搜索的模式外,如果CREATE TABLE命令没有指定模式名,它将是新创建表所在的模式。

评论

登录后才可以发表评论