似乎在Oracle中没有AUTO_INCREMENT的概念,直到包括版本11g.
如何在Oracle 11g中创建一个行为类似自动增量的列?
我有一个现有的数据库,我想用EF4.0构建一个新的应用程序
某些表没有定义主键,因此当我创建新的实体数据模型时,我收到以下消息:"表/视图TABLE_NAME没有定义主键,也没有推断出有效的主键.此表/视图已被排除.要使用该实体,您需要检查您的架构,添加正确的密钥,并取消注释".
如果我想使用它们并修改数据,我是否必须在这些表中添加PK,或者是否有解决方法以便我不必?
我有一些没有主键的列,并且想要添加主键列.
NAME Age
-------------
Peter 45
Bob 25
John 56
Peter 45
Run Code Online (Sandbox Code Playgroud)
一些同事建议添加带有序列和触发器的PK: 在oracle中向现有表添加自动增量主键
这很好,但我的客户使用数据库用户无权添加序列或触发器.我想阻止与数十名DBA管理员联系以更改用户权限或运行我的脚本.
这是我建议添加一个只有更新语句的PK :(我在步骤2中需要帮助)
第1步:创建ID列(我有此权限)
ALTER TABLE PERSON ADD ID NUMBER(10,0);
Run Code Online (Sandbox Code Playgroud)
第2步: 问题:我可以根据行的顺序或其他内容使用唯一值初始化ID列吗?怎么样?
UPDATE PERSON SET ID = something-unique
Run Code Online (Sandbox Code Playgroud)
第3步:在词语后添加主键约束:( 我有权使用此权限)
ALTER TABLE PERSON ADD CONSTRAINT PK_ID PRIMARY KEY(ID);
Run Code Online (Sandbox Code Playgroud)
第4步:后记:主键由我的应用程序管理和添加.
这将是结果:
ID(PK) NAME Age
---------------------
1 Peter 45
2 Bob 25
3 John 56
4 Peter 45
Run Code Online (Sandbox Code Playgroud)
谢谢大家!