主键约束处理的更好方法?

发布于 2024-11-19 14:05:31 字数 388 浏览 1 评论 0原文

我有这个 sqlite 表:

创建表帧(videomd5 TEXT,framemd5 TEXT,类型TEXT,主键(videomd5,framemd5))

正如您所看到的,该表具有组合主键,因为允许其中一个字段具有相同的值,但不能同时具有两个字段。

目前我正在执行这样的检查

从帧中选择framemd5,其中framemd5='$digest' AND videomd5='$videomd5'

在向表中添加一些内容以避免主键约束之前,但我觉得有更好的方法来处理它。我是否应该在不先检查的情况下触发 INSERT,然后再处理 CONSTRAINT?如果是这样,在 Perl 中如何最好地完成此操作?

谢谢

i have this sqlite table:


CREATE TABLE frames (videomd5 TEXT, framemd5 TEXT, type TEXT, PRIMARY KEY (videomd5, framemd5))

As you can see, the table has a combined PRIMARY KEY because it is allowed that one of the fields has the same values but never both at once.

Currently I'm performing a check like this


SELECT framemd5 FROM frames WHERE framemd5='$digest' AND videomd5='$videomd5'

before adding something to the table to avoid a PRIMARY KEY CONTRAINTs but i feel there is a better way to handle it. Should i fire the INSERT without checking first and handel the CONSTRAINT afterwards? If so, how is this best done in perl?

Thank you

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

盛装女皇 2024-11-26 14:05:32

是的,您可以在插入中使用“或忽略”,例如:

sqlite> create table bla (id INT PRIMARY KEY);
sqlite> insert into bla values (1);
sqlite> insert into bla values (1);
Error: column id is not unique
sqlite> insert or ignore into bla values (1);
sqlite> 

有关详细信息,请参阅官方文档:
http://www.sqlite.org/syntaxdiagrams.html#insert-stmt

Yes you can use the "OR IGNORE" in your insert, eg:

sqlite> create table bla (id INT PRIMARY KEY);
sqlite> insert into bla values (1);
sqlite> insert into bla values (1);
Error: column id is not unique
sqlite> insert or ignore into bla values (1);
sqlite> 

Refer to the official doc for the details:
http://www.sqlite.org/syntaxdiagrams.html#insert-stmt

深爱不及久伴 2024-11-26 14:05:32

正如您自己所说 - 有两种方法,进行一些基准测试或选择与您的编码风格相匹配的方法。

不过,我更喜欢第一种方法,而不是处理主键违规异常

As you said yourself - there are two ways, do some benchmarks or select the one which matches your coding style.

I prefer first approach, though, than handling primary key violation exceptions

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文