我有一个应用程序,用户可以在其中查看他发布的所有问题的历史记录。这些必须按照最新到最旧的顺序显示。我正在 Android 中实现这一点。
我有两个问题
1)我没有存储提出问题的时间。postgres 是否在内部存储插入行的时间戳?
2)在移动设备中,一次只能显示几个帖子。因此,当用户滚动时,应该显示新行。所以在数据库中,是否可以像给我前 10 行、10-20 行等查询。
使用 Oracle,有许多工具可以帮助将开发更改迁移和应用到生产环境中(例如Embarcadero Change Manager)。这些工具可以配置为在几乎不需要人工干预的情况下执行任何数据库 DDL 升级。
我有运行 PostgreSQL 9.x 的开发和生产服务器。在将数据库 DDL 初始部署到生产服务器后,我将继续对开发数据库进行更改。这些更改将包括对存储过程的错误修复、对表的更改、附加序列、新视图、更多类型、更多表等。
以自动方式(或几乎自动)升级/迁移生产 PostgreSQL 数据库应用程序的 DDL 以使其在开发中进行新更改的步骤是什么?
谢谢!
在 PostgreSQL 中,我有 2 个具有父/父关系的表。如果没有孩子的记录与之关联,我希望删除父亲记录(使用后触发器)
目前,我一直在做类似的事情
我想知道我是否直接触发删除语句而不获取父记录的计数,例如
在这种情况下,如果任何子项与父项相关联(通过外键),它将抛出错误并且不会被删除
第二种方法是否正确,要完成此操作,是否在 PostgreSQL 中记录了此类错误(外键约束依赖项)
我有一个“文本”表,文本表可能来自不同的来源,如推文、短信、电子邮件等,每个来源都有自己的日志,文本来自来源。所以我提出了一些解决方案,但我不知道哪个是最好的。
解决方案1:
Text(
text_id PK
content
source_type (tweet, sms, email, etc)
source_id (can't be FK since it may contain sms_id, tweet_id, or email_id)
)
Tweet(
tweet_id PK
tweet_text
tweet_username
etc...
)
Sms(
sms_id PK
sms_text
sender_number
etc...
)
Email(
email_id PK
email_text
email_sender
etc...
)
Run Code Online (Sandbox Code Playgroud)
解决方案2:
Text(
text_id PK
content
sms_id FK
tweet_id FK
email_id FK
)
Tweet(
tweet_id PK
tweet_text
tweet_username
etc...
)
Sms(
sms_id PK
sms_text
sender_number
etc...
)
Email(
email_id PK
email_text
email_sender
etc...
)
Run Code Online (Sandbox Code Playgroud)
请注意,一个“文本”仅来自一个来源。
因此,如果我使用解决方案 …
我读过 PostgreSQL 可以有“功能性”索引。为此,您需要immutable关键字。
看到 PostgreSQL 是一个 CRUD 数据库,我完全不明白它是如何以功能方式工作的。
如果数据库有更新或删除,过去的查询如何保证相同查询的结果总是相同的?
当我将密码设置为空白时,它没有给出任何警告。现在,当我尝试使用空白密码登录时,它给了我一个错误“fe_sendauth:没有提供密码”。所以现在我无法登录 - 有什么想法可以再次访问数据库吗?
对于未来的项目,我需要使用以下设置:
一些小的(离线)数据框(随着时间的推移收集数据)填满了 PostgreSQL 数据库(大约1 TB a year总共)。
有时,我有机会将数据从这些盒子中移出(到棒或移动驱动器上)并将其导入到庞大的企业 Oracle 数据库中。
到目前为止,这希望不是一个非常糟糕的解决方案。目前,我正在寻找准备好以后易于使用的东西。
有没有人做过这样的事情?
他们本质上不是通过将所有数据存储在一个文件中并将其转储到另一个数据库中来做同样的事情吗?是否pg_dump只是将数据添加到已经存在的任何内容并恢复删除所有内容然后将其转储?
我想将生产数据库从一台 Linux 服务器迁移到另一台。我不关心升级我的数据库版本,只是我想以最少的停机时间将数据库从一台服务器移动到另一台服务器。
我的数据库版本是8.3。它的大小为 160 GB。
转储需要 12 小时,恢复需要 8 小时。
在这里,停机时间为 20 小时,这是我负担不起的。我最多可以承受 4 小时的停机时间。
那么我将如何将 20 小时内发生的增量更改刷新到生产数据库中,而数据库则位于另一台服务器上。
请帮忙。
我有一个运行良好的 UPSERT 函数,但我批量更新和插入记录,可以修改此函数,以便我将所有记录作为数组传递给此函数,然后它将作为一个事务一次性插入/更新所有记录? 如果记录号 x 失败,它应该回滚撤消在 x 之前插入/更新的任何记录?这是我的 upsert 函数:
CREATE OR REPLACE FUNCTION save_weights(rec tbl_weightment)
RETURNS text AS
$BODY$
DECLARE
myoutput text :='Nothing has occured';
BEGIN
update tbl_weightment set
vname=rec.vname,
iquality=rec.iquality,
vhooks=rec.vhooks,
tstamp=rec.tstamp
vtare=rec.vtare,
vgross=rec.vgross
WHERE id=rec.id;
IF FOUND THEN
myoutput:= 'Record successfully updated';
RETURN myoutput;
END IF;
BEGIN
INSERT INTO tbl_weightment SELECT(rec).*;
myoutput:= 'Record successfully added';
END;
RETURN myoutput;
END;
$BODY$
LANGUAGE plpgsql VOLATILE
COST 100;
Run Code Online (Sandbox Code Playgroud)
这个功能可以修改成这样save_weights(rec tbl_weightment[])吗??任何帮助将不胜感激