Questions tagged «primary-key»

关键字是一组属性,这些属性在表中是不可避免地唯一且不可为空。

7
外键是指跨多个表的主键?
我必须在数据库employees下有两个表,即employees_ce和employees_sn。 它们都有各自独特的主键列。 我还有另一个表称为扣除,该表的外键列我要引用employees_ce和employees_sn的主键。这可能吗? 例如 employees_ce -------------- empid name khce1 prince employees_sn ---------------- empid name khsn1 princess 那有可能吗? deductions -------------- id name khce1 gold khsn1 silver

4
为什么select SCOPE_IDENTITY()返回的是小数而不是整数?
所以我有一个带有标识列作为主键的表,所以它是一个整数。那么,为什么SCOPE_IDENTITY()总是向我的C#应用​​程序返回一个十进制值而不是一个int?这真的很烦人,因为十进制值不会在C#中隐式转换为整数,这意味着我现在必须重写一堆东西并使用很多辅助方法,因为我使用了SQL Server和Postgres,而Postgres确实会为等效功能 为什么SCOPE_IDENTITY()不只返回纯整数?有没有人通常将十进制/非身份值用作主键?

6
在Django模型中使用UUID作为主键(通用关系影响)
由于多种原因^,我想在某些Django模型中使用UUID作为主键。如果这样做,我是否仍可以使用通过ContentType使用通用关系的外部应用程序,例如“ contrib.comments”,“ django-voting”或“ django-tagging”? 以“ django-voting”为例,Vote模型如下所示: class Vote(models.Model): user = models.ForeignKey(User) content_type = models.ForeignKey(ContentType) object_id = models.PositiveIntegerField() object = generic.GenericForeignKey('content_type', 'object_id') vote = models.SmallIntegerField(choices=SCORES) 该应用似乎假设要投票的模型的主键是整数。 内置的注释应用程序似乎能够处理非整数PK,但是: class BaseCommentAbstractModel(models.Model): content_type = models.ForeignKey(ContentType, verbose_name=_('content type'), related_name="content_type_set_for_%(class)s") object_pk = models.TextField(_('object ID')) content_object = generic.GenericForeignKey(ct_field="content_type", fk_field="object_pk") 对于第三方应用程序来说,这种“整数PK假定”问题是否很常见,这会使使用UUID感到痛苦?或者,可能是我误读了这种情况? 有没有一种方法可以将UUID用作Django中的主键,而又不会造成太多麻烦? ^一些原因:隐藏对象计数,防止url“ id爬行”,使用多台服务器创建不冲突的对象,...

26
您如何看待您的主键?[关闭]
按照目前的情况,这个问题不适合我们的问答形式。我们希望答案会得到事实,参考或专业知识的支持,但是这个问题可能会引起辩论,争论,民意测验或进一步的讨论。如果您认为此问题可以解决并且可以重新提出,请访问帮助中心以获取指导。 8年前关闭。 在我的团队中进行的相当活跃的讨论中,我被认为是大多数人喜欢的主键。我们有以下几组: Int / BigInt哪个自动增量是足够好的主键。 主键应至少包含3列。 id,GUID和人类可读的行标识符都应区别对待。 PK的最佳方法是什么?如果您能证明自己的观点,那就太棒了。上面有没有更好的方法? 编辑:任何人都有一个简单的示例/算法来生成很好地缩放行的人类可读的标识符?

14
使用Rails,如何将主键设置为非整数类型的列?
我正在使用Rails迁移来管理数据库模式,并且正在创建一个简单的表,在该表中我想使用非整数值作为主键(特别是字符串)。为了简化我的问题,我们假设有一个表employees,其中的员工由字母数字字符串标识,例如"134SNW"。 我试过在这样的迁移中创建表: create_table :employees, {:primary_key => :emp_id} do |t| t.string :emp_id t.string :first_name t.string :last_name end 这给了我什么,似乎它完全忽略了该行t.string :emp_id,并使其成为整数列。还有其他方法可以让rails为我生成PRIMARY_KEY约束(我正在使用PostgreSQL),而不必在execute调用中编写SQL吗? 注意:我知道最好不要将字符串列用作主键,所以请不要回答只是说要添加一个整数主键。我仍然可以添加一个,但是这个问题仍然有效。

5
如何从SQLite表中检索最后一个自动递增的ID?
我有一个表Messages,其列ID(主键,自动递增)和Content(文本)。 我有一个表Users,具有用户名列(主键,文本)和哈希。 一个发件人(用户)将一条消息发送给许多收件人(用户),并且一个收件人(用户)可以有很多消息。 我创建了一个具有两列的表Messages_Recipients:MessageID(指的是Messages表的ID列和Recipient(指的是Users表中的username列)。该表代表了收件人和消息之间的多对多关系。 所以,我的问题是这个。将新消息的ID存储在数据库中后,将创建该ID。但是,如何保留对我刚刚添加的MessageRow的引用,以检索此新的MessageID?我总是可以在数据库中搜索添加的最后一行,但是在多线程环境中可能返回其他行吗? 编辑:据我了解,对于SQLite,您可以使用SELECT last_insert_rowid()。但是,如何从ADO.Net调用此语句? 我的持久性代码(消息和消息收件人是数据表): public void Persist(Message message) { pm_databaseDataSet.MessagesRow messagerow; messagerow=messages.AddMessagesRow(message.Sender, message.TimeSent.ToFileTime(), message.Content, message.TimeCreated.ToFileTime()); UpdateMessages(); var x = messagerow;//I hoped the messagerow would hold a //reference to the new row in the Messages table, but it does not. foreach (var recipient in message.Recipients) { var …

3
将PostgreSQL主键重置为1
有没有一种方法可以将已填充表上的PostgreSQL表的主键重新设置为从1开始? 现在,它正在生成从1000000起的数字。我希望所有这些都重置并开始为1,以保持所有现有数据不变。

14
如何获取表的主键?
有没有办法从mysql数据库获取主键字段的名称?例如: 我有一个这样的表: +----+------+ | id | name | +----+------+ | 1 | Foo1 | | 2 | Foo2 | | 3 | Foo3 | +----+------+ 其中字段ID是主键(它具有自动递增功能,但我不能使用它)。如何在php中检索字段名称“ id”?
80 php  mysql  primary-key 

17
在MySQL中删除后自动递增
我有一个带有主键字段且具有AUTO_INCREMENT的MySQL表。在阅读了这里的其他文章后,我发现人们遇到同样的问题,答案也各不相同。有些人建议不要使用此功能,其他人则说它不能被“修复”。 我有: table: course fields: courseID, courseName 示例:表中的记录数:18.如果删除记录16、17和18-我希望输入的下一条记录的courseID为16,但是由于最后输入的courseID为18,所以它将为19。 我的SQL知识并不奇怪,但是无论如何,是否可以通过查询(或phpMyAdmin界面中的设置)刷新或更新此计数? 该表将与数据库中的其他表相关。 有了所有建议,我决定忽略这个“问题”。我将简单地删除和添加记录,同时让自动增量完成它的工作。我猜数字到底有多大无关紧要,因为它仅用作唯一标识符,并且没有(如上所述)业务含义。 对于那些可能对我的原始帖子感到困惑的人:我不想使用此字段来知道我有多少条记录。我只是希望数据库看起来整洁,并具有更多的一致性。

5
外键可以引用同一表中的主键吗?
我只是认为答案是错误的,因为外键没有uniqueness属性。 但有些人说,可以在自助加入餐桌的情况下进行。我是新来的SQL。如果是真的,请解释如何以及为什么? Employee table | e_id | e_name | e_sala | d_id | |---- |------- |----- |--------| | 1 | Tom | 50K | A | | 2 | Billy | 15K | A | | 3 | Bucky | 15K | B | department table | d_id | d_name …

5
SQL:在MySQL中将现有列设置为主键
我有一个包含3列的数据库: id, name, somethingelse 该表未设置索引,并且我正在获取“未定义索引!” phpmyadmin中的 id是一个7位字母数字值,每行唯一。 我想将Drugid设置为主键/索引(如果有的话我不知道区别) 请详细解释,因为我对此并不陌生。 谢谢。

8
相较于标准Guid,Sequential Guid在性能上有哪些改进?[关闭]
已关闭。这个问题需要更加集中。它当前不接受答案。 想改善这个问题吗?更新问题,使其仅通过编辑此帖子来关注一个问题。 8个月前关闭。 改善这个问题 有人曾在用作数据库内的主键时测量过顺序向导与标准向导的性能吗? 我认为不需要唯一键是可猜测的,从Web UI或其他部分传递它们本身似乎是一种不好的做法,并且如果您有安全方面的顾虑,我看不到如何使用guid可以改善事情(如果是这样的话,请使用使用框架的适当加密函数的真实随机数生成器)。 我的方法涵盖了其他项目,可以从代码生成顺序的guid,而无需DB访问(即使仅对于Windows),并且在时间和空间上是唯一的。 是的,提出这个问题的目的是为了回答那些选择了Guid进行PK的人们一种改善数据库使用率的方法(在我的情况下,这使客户能够承受更大的工作量而不必更换服务器)。 看来,安全性问题很多,在这种情况下,请不要使用Sequential Guid,或者最好不要将标准Guid用于PK,这些PK从UI来回传递,而sequential guid用于其他所有操作。与往常一样,没有绝对的真理,我也编辑了主要答案以反映这一点。
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.