在现代版本的Oracle中,是否有一些"标准"(存储过程,附加的CREATE语法等)方法来设置具有auto_increment/identity样式列的表,或者我们仍然无法手动创建表,创建序列,并创建触发器.
更新:我意识到Oracle没有auto_increment的概念.我感兴趣的是,如果任何标准Oracle工具已经自动化了序列和触发器的创建,或者如果DBA留下来创建所需的查询/命令来创建序列并触发它们自己.
在Rails中,我正在寻找一种方法来为内部记录生成一个自动递增的序列号,以保留模型的新实例.我想避免创建特定于数据库的代码,而是提供一个无论数据库如何都可以工作的解决方案.我目前的想法是等到模型被保存,然后获取已保存模型的ID并将其用作序列号的后缀,但是我必须在创建时保存每个记录两次.
有任何想法吗?
谢谢你的期待!
我需要在时态数据中对MySQL表进行分区(字段从下表开始).
CREATE TABLE `table1` (
`id` bigint(20) NOT NULL AUTO_INCREMENT,
`fk_id` bigint(20) NOT NULL,
`begin` bigint(20) NOT NULL,
PRIMARY KEY (`id`),
KEY `FK1E57078DB20EC268` (`fk_id`)
) ENGINE=MyISAM AUTO_INCREMENT=10443288 DEFAULT CHARSET=latin1
Run Code Online (Sandbox Code Playgroud)
当我尝试像这样分区时:
alter table table1 partition by range (begin) (
PARTITION until_2010_07 VALUES LESS THAN (1280620800000),
PARTITION 2010_08 VALUES LESS THAN (1283299200000),
PARTITION 2010_09 VALUES LESS THAN (1285891200000),
PARTITION 2010_10 VALUES LESS THAN (1288569600000),
PARTITION 2010_11 VALUES LESS THAN (1291161600000),
PARTITION 2010_12 VALUES LESS THAN (1293840000000),
PARTITION from_2011 VALUES LESS THAN MAXVALUE …Run Code Online (Sandbox Code Playgroud) 将实际ID(由数据库自动递增)显示给用户是否存在安全风险?你能举出一些人们可以用它做什么危险的实际例子吗?
我在C#中申请.在我的应用程序中,我使用Dictionary以下结构:
Dictionary<int, string> DataDictionary1 = new Dictionary<int, string>();
Run Code Online (Sandbox Code Playgroud)
在这里,我希望字典中的键值应该是自动增量.为此,我使用逻辑:
string header="ABC";
int maxKey = DataDictionary1 .Max(x => x.Key);
DataDictionary1 .Add(maxKey + 1, header);
Run Code Online (Sandbox Code Playgroud)
这是一种有效的方式,因为我想继续这种操作.有没有比这种方式更快的其他方式?
将有人请解释下一个:
在"Programming Perl"一书中,postfix autoincrement operator被描述为
放置之后,它们(
$a--,$a++)在返回值后递增或递减变量.
因此,据我所知,$a++从未在虚空环境中使用,因为有人说过
他们增加或减少变量
但在下一个示例中,变量的值永远不会改变:
my $a = 3;
$a = $a++;
say $a; #always outputs 3
Run Code Online (Sandbox Code Playgroud)
所以我的假设是,当将值分配给同一个变量时,没有理由使用后自动递增,但是"编程Perl"中的定义应该被认为是错误的,因为运算符不会影响变量,而是变量中的值(至少在那个例子中).是对的吗?
提前欣赏.
我想生成自动编号以使用TD SQL,例如,如下所示,
CREATE MULTISET TABLE TEST_TABLE
(
AUTO_NUMBER INT,
NAME VARCHAR(10)
)
PRIMARY INDEX (AUTO_NUMBER);
INSERT INTO TEST_TABLE
VALUES('TOM');
INSERT INTO TEST_TABLE
VALUES('JIM');
INSERT INTO TEST_TABLE
VALUES('JAN');
SELECT * FROM TEST_TABLE;
Run Code Online (Sandbox Code Playgroud)
上面的结果是
1 TOM
2 JIM
3 JAN
Run Code Online (Sandbox Code Playgroud) 我有一个实体如下
[Table("ESS_POS_SE_VERSION")]
public class Version
{
[Key, Column("DETAIL_ID"), DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int Id { get; set; }
[Column("DETAIL_TITILE")]
public string DetailKey { get; set; }
[Column("DETAIL")]
public string Detail { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
SO Id列是自动增量列,但我需要将其起始值设置为1000.我该怎么做?
我想要一个JPA/Hibernate(最好是JPA)注释,它可以生成一个列的值,它不是主键,也不是从1开始.
从我所看到的,JPA不能用@GeneratedValue和@SequenceGenerator以及@TableGenerator来做到这一点.或者其他任何东西.
我已经看到了一个带有额外桌子的解决方案,我觉得这不是很优雅.
我可以使用Hibernate注释,因为我已经有了hibernate注释.
我想使用@Generated,但我不能让它工作,人们声称它是可能的.
@Generated(GenerationTime.INSERT)
private long invoiceNumber;//invoice number
Run Code Online (Sandbox Code Playgroud)
更新:一个额外的要求,如果事务回滚,我们不能在编号上有差距.任何人?
我Booking在Django中有一个模型,它的ID是idDjango创建的内置列.以下是它在Postgres中查看数据库级别的方式:
integer not null default nextval('bookings_booking_id_seq'::regclass)
Run Code Online (Sandbox Code Playgroud)
客户今天已经打电话,担心这些数字似乎是连续的,但并不总是连续的.例如,序列如下:
..2, ..3, ..4, ..6, ..8, ..9
Run Code Online (Sandbox Code Playgroud)
他们担心系统正在丢弃或删除预订.在哪里..5和..7?我们[实际上]记录了可以删除预订的所有内容,因此我非常有信心这不是系统问题.程序员的直觉也告诉我不要期望Auto-ID的连续性,但单凭直觉对于向客户解释是不够的.
是否存在技术原因Postgres在分配这些ID时会跳过数字?
auto-increment ×10
mysql ×3
c# ×1
dictionary ×1
django ×1
hibernate ×1
identity ×1
java ×1
jpa ×1
max ×1
oracle ×1
partitioning ×1
perl ×1
php ×1
postgresql ×1
primary-key ×1
security ×1
sql ×1
teradata ×1