草庐IT

主键自增

全部标签

mysql - MySQL 中的两列主键

我有一个非常简单的问题和一个可行的解决方案,但我正在寻找一个更简单的问题。当多个值等于现有值时,我想阻止将行添加到数据库中。例如,如果a2=a1ANDb2=b1则数据将被拒绝。如果只有a2=a1或只有b2=b1是允许的。基本上我希望它像主键一样需要两个值匹配。我知道我可以在写入数据库之前通过验证来做到这一点——例如。select*wherea='a2'andb='b2'然后在我得到结果时避免写入新数据。我宁愿做的是启用一个MySQL设置,比如主键,它会自动阻止这样的数据。除了基本功能外,我对MySQL不是很熟悉,如果这很简单,我深表歉意。在谷歌上搜索有关唯一索引和主键的各种信息都无济于

mysql - 连接表(关联表)是否有主键?多对多关系

Join表(关联表)有主键吗?多对多关系。我见过一些带有主键的Join表,有些没有提前谢谢你;-) 最佳答案 在纯“连接”或联结表中,所有字段都将成为主键的一部分。例如,让我们考虑下表:CREATETABLEUSERS(ID_USERNUMBERPRIMARYKEY,FIRST_NAMEVARCHAR2(32),LAST_NAMEVARCHAR2(32));CREATETABLEATTRIBUTES(ID_ATTRIBUTENUMBERPRIMARYKEY,ATTRIBUTE_NAMEVARCHAR2(64));它们之间的联结表允许

mysql - 如何编写 SQL 查询来检测重复的主键?

假设我想改变表,使我的主键如下user_id,round,tournament_id目前有重复项需要清理。查找所有重复项的查询是什么?这是针对MySQL的,我希望看到重复的行 最佳答案 从技术上讲,您不需要这样的查询;任何有值(value)的RDBMS都不允许插入会在表中产生重复主键的行。这样的事情违反了主键的定义。但是,如果您希望在将主键应用到包含这些列的表之前编写查询来查找这些列组的重复项,那么这就是您想要的:selectt.user_id,t.round,t.tournament_idfromtableastgroupbyt.

mysql - 从所有表中具有相同主键的多个表中获取数据

我有4个表都具有相同的主键,结构如下:table_1:u_id|col1|col2table_2:u_id|col3|col4table_3:u_id|col5|col6table_4:u_id|col7|col8我想获取"col1","col4","col6"and"col7"的数据基于u_id的值.u_id的值每张表都一样。例如。如果u_id='8',然后获取所有指定的列值,其中u_id='8'.我想我没有正确使用连接。谢谢。 最佳答案 这应该很简单。使用INNERJOINSELECTa.col1,b.col4,c.col6,d

mysql - 使用自增主键插入记录

我在phpMyAdmin中创建了一个MySQL数据库,它有一个自动递增的主键ID。在phpMyAdmin中,我可以通过INSERTINTOMyTableVALUES(null,1,2,3)插入记录,空位置用于ID。将数据库数据加载到Delphi应用程序中(连接->表或查询->DataSetProvider->ClientDataSet->DataSource->DBGrid和DBNavigator),如何在不手动输入ID值的情况下插入记录?如果我没有在ID字段中输入数字,则会出现错误。 最佳答案 将字段的Required属性设置为f

mysql - 可以将非顺序 ID 作为数据库中表的主键吗?

我对数据库的了解还不够,找不到合适的词来问这个问题,所以让我举个例子来解释我正在尝试做的事情:假设我想要一个表的主键是一个ID我从一个API中获取,但大多数API请求都会导致404错误。结果,我的表​​看起来像这样:我也不知道如何在StackOverflow上格式化类似表格的结构,所以这将是一个粗略的视觉效果:API_ID_PK|name------------------1|Billy5|Timmy23|Richard54|Jobert104|BroccoliID可以不用1位顺序分隔吗?或者我应该这样做:IDPK|API_ID|NAME------------------------

mysql - 有什么方法可以在不使用自增字段或时间戳的情况下从 MySQL 表中获取最后 N 行?

stackoverflow本身有很多解决方案,其目标是使用自增字段或时间戳读取表的最后n行:例如,以下查询从名为tab的表中获取最后十条记录表中自增字段名为id的字段值降序排列:Select*fromtaborderbyiddesclimit10我的问题是:是否有任何替代方法无需获取自动递增字段或时间戳即可完成任务以获得相同的输出?提示:问这个问题的动机来自于这样一个事实:当我们将记录存储到表中时,以及在不指定任何条件的情况下使用简单查询查询数据库时,例如:Select*fromtab然后输出的顺序与插入表中记录的顺序相同。那么有没有什么办法可以按照输入数据库的顺序倒序获取记录呢?

mysql - 一次检索数据库中所有表的 MAX 主键值

我需要做的是一次检索数据库中所有表的最大主键吗?也就是说,如果我执行以下2个查询,我的结果将是这样的:SHOWTABLESFROMDATABASE_NAMESELECTMAX(PRIMARY_KEY)ASmaxIdFROMTABLE也就是(firstcolumn=TableName,secondcolumn=MAX(PK)Ofthattable)如果我做错了什么,请原谅。我只是不想写80个查询,因为我的数据库有80个表。 最佳答案 如果(且仅当)您的主键是AUTOINCREMENT变量,您可以这样做:SELECTTABLE_NAME

php - GROUP BY 外键还是主键?

我有两个表:user=======idnameclassmarks=======iduser_idsub_idmark用户表包含用户(学生)的详细信息marks表包含一个学生在不同科目中的分数,带有subjectid我想从这些表中获取姓名、类(class)和总分。我有两个问题:1.SELECTname,class,SUM(mark)AStotalFROMuserLEFTJOINmarksONmarks.user_id=user.idGROUPBYmarks.user_id///HereinGROUPBYIhaveusedforeignkey(marks.user_id)2.SELECT

php - Laravel - 多主键

我是Laravel框架的新手,我也尝试用2个外键创建表,我希望它们成为这个表中的主要对象。但是我写phpartisanmigrate的时候报错SQLSTATE[42000]:语法错误或访问冲突:1068多个主键y已定义(SQL:altertabledoc_tag添加主键doc_tag_id_tag_primary(id_tag)Schema::create('doc_tag',function(Blueprint$table){$table->integer('id_doc')->unsigned();$table->primary('id_doc');$table->foreign(