在我的表(MySQL)中,我有以下字段:
id - primary,auto_increment
hash - 基数36表示 id
我想一次填充两个字段,使用存储过程来计算INSERT上接收的值id的基数36.像这样的东西:
INSERT into `urls` (`id`,`hash`) VALUES (NULL,base36(`id`));
Run Code Online (Sandbox Code Playgroud)
显然这不起作用,但我希望它说明了我想要实现的目标.这是可能的,如果是的话,怎么样?
注意:我只想使用一个查询,所以last_insert_id没有帮助(至少我理解).
是否可以autoincrement像在Postgres中那样在SQL Server中设置字段的下一个值?
对于好奇,这是整个背景故事.我的公司过去常常使用Postgres,它允许您轻松地将自动增量字段的下一个值设置为任意值.
新公司买了旧公司,现在我们将Postgres数据导入SQL Server.不知何故AcctID,账户上的自动增量字段设置为9位数字,即使有数千个8位数字.显然有人在Postgres做了一段时间,因为一些现在不为人知的原因.
所以现在在新的SQL Server数据库中,新帐户有9位帐户ID,但客户的会计软件无法处理9位帐号,因此他们添加的任何新帐户都无法由其会计部门处理直到这个问题得到解决
当然,最多有72个不同的表可以依赖于AcctID字段Accounts,并且客户端在实现所涉及的问题之前创建了大约360个新帐户,因此保存该数据,截断表并重新插入数据将是繁重的任务.
更好的是将自动增量值设置AcctID为最后的8位数值+ 1.然后,至少他们能够在处理9位数帐户的解决方案时添加新帐户.事实上,他们声称他们只需要他们添加的360个帐户中的3个.
那么可以像在Postgres中那样重置SQL Server中字段的自动增量值吗?
有没有办法在属性上放置一个属性来告诉 RavenDB 像 ID 属性一样使用这个属性并在它上面放置一个自动增量?
伪代码:
public class MyObj {
public string Id { get; set; }
[Increment]
public int OtherProp { get; set; }
}
Run Code Online (Sandbox Code Playgroud) 我在HP的Vertica数据库中创建了一个表.我想在Vertica中创建自动增量列.
在MySQL中它已经完成,在Oracle中我使用序列和触发器创建它,但我怎样才能在HP Vertica中完成它?
我想要5位数的计数器,例如:00000,00001,00002 ....我用这个命令创建文件:
FileStream Fl = File.Create(@"C:\\U\\L\\Desktop\\" + "i" + (counter) + ".xml");
Run Code Online (Sandbox Code Playgroud)
柜台的定义:
int counter;
Run Code Online (Sandbox Code Playgroud)
我的增量:
counter++;
你有什么想法,我怎么能做5位数的计数器?感谢所有的想法:)
我想知道是否可以创建一个带有一个Column的表,如果(格式:YYYY ##)得到一个自动递增的年份数:
CRATE TABLE "Example"(
[Number] autoincrement(YYYY##),
[Text] nvarchar(30)
)
Run Code Online (Sandbox Code Playgroud)
列'数'看起来怎么样?甚至可能吗?
谢谢!
第2部分:
年度背后的数字应该从每年的0开始.
示例输出:
2013-01
2013-02
2013-03
2014-01
我想将以下两个查询合二为一:
SELECT pg_get_serial_sequence('purchase_orders', 'id');
SELECT setval('purchase_orders_id_seq', 30000);
Run Code Online (Sandbox Code Playgroud)
但是如果我将上面的 SELECT 放入 setval 的第一个参数中,我会得到:
SELECT setval(SELECT pg_get_serial_sequence('purchase_orders', 'id'), 30000);
ERROR: syntax error at or near "SELECT"
SQL state: 42601
Character: 15
Run Code Online (Sandbox Code Playgroud)
如何传递 setval 的选择结果(“purchase_orders_id_seq”)?
编辑:这样做的原因是;我想像使用它一样使用它,用户只需输入表的名称和将设置序列的数字。
FUNCTION set_id_sequence(TEXT table_name, INTEGER sequence);
Run Code Online (Sandbox Code Playgroud) 我有一个 django 模型,它的 id 开始奇怪地增加。
列的 postgres 定义(从 Django 模型生成):
id | integer | not null default nextval('billing_invoice_id_seq'::regclass)
tpg=> SELECT MAX(id) FROM billing_invoice;
max
-------
16260
Run Code Online (Sandbox Code Playgroud)
然后我通过 django admin 创建了一个新记录:
tpg=> SELECT MAX(id) FROM billing_invoice;
max
-------
17223
tpg=> SELECT nextval('billing_invoice_id_seq');
nextval
---------
17224
Run Code Online (Sandbox Code Playgroud)
然后我创建了一个新记录,它跳过了 17224 值并插入了 17225 的主键:
tpg=> SELECT nextval('billing_invoice_id_seq');
nextval
---------
17226
Run Code Online (Sandbox Code Playgroud)
有谁知道为什么会这样?应用程序此时并不关心,因为 id 仍在增加,但在最后几个新对象中,PK 在一次插入中从 427 -> 4357 跳过,然后在 2 个对象中跳到 8378,然后在 3 个对象中跳到 97xx它跳到了 14k。
我正在编写R代码,其中有一个向量'x',其中包含值1到100,我想创建另一个向量'y',它在每第n个范围内设置一系列值.我确定我可以使用rep()和seq(),但我无法找出代码来获得我需要的东西.这是输出应该是什么样子
x <- 1:100
y <- 1 2 3 11 12 13 21 22 23 31 32 33 41 42 43 51 52 53 61 62 63 71 72 73 81 82 83 91 92 93
Run Code Online (Sandbox Code Playgroud)
所以如果我有一个向量x < - 1001:1100,x [y]应该返回:
1001 1002 1003 1011 1012 1013 1021 1022 1023 1031 1032 1033 1041 1042 1043...etc
Run Code Online (Sandbox Code Playgroud)
有任何想法吗?
我有一个带有auto_increment列的表。我将列的最后一个值保存在另一个名为ids_tbl的表中,当mysql重新启动时,从ids_tbl中读取该值并重新设置AUTO_INCREMENT值。如果我这样做:
alter table outgoing_tbl auto_increment=500;
Run Code Online (Sandbox Code Playgroud)
有用
但是如果我这样做
select @max_id:= max_id FROM ids_tbl;
alter table outgoing_tbl auto_increment=@max_id;
Run Code Online (Sandbox Code Playgroud)
或者如果我这样做:
select @max_id:= max_id FROM ids_tbl;
alter table outgoing_tbl auto_increment=(select @max_id);
Run Code Online (Sandbox Code Playgroud)
然后它不起作用,如何通过变量设置自动增量值?