【问题标题】:How to get last record / max value如何获取最后一条记录/最大值
【发布时间】:2015-04-17 18:09:01
【问题描述】:

我有 PWD,应该是 0001、0002、0003、0004

所以当我想在数据库中添加新记录时,我会得到这样的最大值

sql.Query(" SELECT pwrd FROM users WHERE pwrd = (SELECT max(pwrd ) FROM users)")
        Dim highest As Integer = (sql.SQLDataset.Tables(0).Rows(0).Item(0))

通过这种方式,我从表示例“0004”中获得最高行 现在,当添加新查询时,我需要将该值增加 1 为“0005”

如果我去TextBox1.Text = Highest + 1 我只会得到 5 没有“000”

【问题讨论】:

  • 我要么使用自动增量列类型,要么在插入触发器期间设置此值。尝试在这样的代码中执行此操作会导致竞争条件。
  • 在插入触发器下进行自动增量是什么意思。该查询将如何进行

标签: mysql vb.net


【解决方案1】:

您可能希望将 ZEROFILL 属性添加到该字段。

你可以像这样创建你的表:

ALTER TABLE users MODIFY pwd INT(3) zerofill AUTO_INCREMENT not null;

编辑:

您可以尝试删除表并像这样创建:

CREATE TABLE users
(
   ID INT IDENTITY(1, 1)
   , pwd  AS RIGHT('000' + CAST(Id AS VARCHAR(4)), 4)
  )

【讨论】:

  • 刚刚google了一下,大概是这样,但是怎么做
  • @AnelHodzic:- 我建议改变你的表,然后简单地插入密码。要更改表,您可以使用此 sql:ALTER TABLE tbl MODIFY pwd INT(3) zerofill AUTO_INCREMENT not null;
  • 问题是这是学校作业,我有主键自动增量,即 ID,它看起来像这样。 “pokit.org/get/img/a63e74fe27d4720d2afcf9d41e74a320.jpg”也可以设置这个自动增量吗?
  • @AnelHodzic:- 您提供的链接已损坏。无论如何,我已经添加了 alter table 脚本。您只需要运行该脚本即可完成所有工作。
  • 非常感谢你帮助我,但我把它弄错了 MS SQL,这就是我得到的pokit.org/get/?120a1aef7e07c64b1e649b62e9ff1a35.jpg'MODIFY'附近的语法错误。
【解决方案2】:
TextBox1.Text = (Highest + 1).ToString.PadLeft("0",4)

未测试,因此语法可能有点偏差。

【讨论】:

    猜你喜欢
    • 2012-01-23
    • 2023-01-28
    • 2015-01-29
    • 2023-03-16
    • 2012-04-11
    • 2012-02-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多