我希望INSERT在Java中使用JDBC中的数据库(在我的情况下是Microsoft SQL Server)中的记录.同时,我想获取插入ID.如何使用JDBC API实现此目的?
我有以下查询:
INSERT INTO table (a) VALUES (0)
ON DUPLICATE KEY UPDATE a=1
Run Code Online (Sandbox Code Playgroud)
我想要插入或更新的ID.通常我会运行第二个查询以获取此信息,因为我认为insert_id()只返回'inserted'ID而不是更新的ID.
有没有办法INSERT/UPDATE并检索行的ID而不运行两个查询?
是否有替代mysql_insert_id()PostgreSQL的PHP函数?大多数框架通过查找ID中使用的序列的当前值来部分解决问题.但是,有时主键不是串行列....
我想在mysql datetime字段中插入日期和时间.当用户选择日期和时间时,它将生成两个POST变量.我搜索过互联网,但仍不确定如何做到这一点.
我的代码.
//date value is 05/25/2010
//time value is 10:00
$date=$_POST['date'];
$time=$_POST['time'];
$datetime=$date.$time
Run Code Online (Sandbox Code Playgroud)
如果我将$ datetime插入mysql,则日期显示为0000-00-00:00:00:00
如果有人能帮助我,我感激不尽.谢谢.
我正在尝试这样的事情:
INSERT INTO dir_pictures SET filename=CONCAT(picture_id,'-test');
Run Code Online (Sandbox Code Playgroud)
picture_id是我的主键,自动增量.基本上我正在尝试将此insert语句的id放在语句本身中.
我确信可以使用一些额外的PHP代码或使用多个语句来完成,但我想知道是否有一种快速简便的方法可以一次性完成.
PS.上面的陈述总是把'0测试'
如何使用multirow插入获取最后插入的ID?这是我的代码:
$sql='INSERT INTO t (col1, col2, col3) VALUES (1, 2, 3), (4, 5, 6), (7, 8, 9)'; // example
$stmt = $contactsTable->getAdapter()->prepare($sql);
$stmt->execute();
$rowsAdded=$stmt->rowCount(); // mysql_affected_rows
$lastId=$stmt->lastInsertId();
echo '<br>Last ID: '.$lastId;
Run Code Online (Sandbox Code Playgroud)
另外,ZF中是否有一个方法可以在插入之前获取下一个插入ID?
谢谢
我在3〜4年前编程,我记得在2005年的一本关于使用mysql_insert_id检索last_inser_id的安全性的php安全书.
在书中说如果同时向服务器发出多个请求(数千个),则可能使得last_insert_id的检索错误,以用户的id指向其他用户结束.
现在我们在2013年,你们有什么要说的,特别是使用codeigniter insert_id().
pd:我试图在其他地方找到关于我的问题的相关信息,但我没有找到具体的东西.
我可以在NSSortDescriptor中使用内部ID变量或时间戳来按插入顺序检索Core Data实体吗?
如果有更清洁的方式,我宁愿不必创建这样的属性,但如果没有其他选择,显然会这样做.
我正在插入一个带有char列的行,用于基于(除其他外)行的自动id之外的哈希.
我知道我可以插入它,获取insert_id,计算哈希值并更新它.
有没有人知道在单个查询中执行此操作的方法?插入时需要插入行insert_id.那是完全不可能的,还是有类似current_insert_id()的东西......
谢谢!
我想知道我用来检索postgresql表中插入的最后一行的id的方式是有效的..
显然,它可以工作,但是当我有许多用户同时在同一个表中添加行时,引用串行序列currval值可能会有问题.
我的实际方式是:
$pgConnection = pg_connect('host=127.0.0.1 dbname=test user=myuser password=xxxxx')or die('cant connect');
$insert = pg_query("INSERT INTO customer (name) VALUES ('blabla')");
$last_id_query = pg_query("SELECT currval('customer_id_seq')");
$last_id_results = pg_fetch_assoc($last_id_query);
print_r($last_id_results);
pg_close($pgConnection);
Run Code Online (Sandbox Code Playgroud)
好吧,它只是一个测试atm.但无论如何,我可以用这种方式看到3个问题:
有什么建议/更好的方法吗?
ps:我不能使用PDO,因为似乎缺少事务保存点; 我不会使用zend,最后,我更喜欢使用php pg_*函数(也许我最终会构建我的类)
编辑:
@SpliFF(他们删除了他的回答):这会更好吗?
$pgConnection = pg_connect('host=127.0.0.1 dbname=test user=myuser password=xxxxx')or die('cant connect');
pg_query("BEGIN");
$insert = pg_query("INSERT INTO customer (name) VALUES ('blabla')");
$last_id_query = pg_query("SELECT currval('customer_id_seq')");
$last_id_results = pg_fetch_assoc($last_id_query);
print_r($last_id_results);
//do somethings with the new customer id
pg_query("COMMIT");
pg_close($pgConnection);
Run Code Online (Sandbox Code Playgroud) 我正在使用adodb for PHP库.
为了获取插入记录的id,我使用此函数
"$db->Insert_ID()"
我想知道是否有多个同时插入数据库表,这个方法会为每个插入的记录返回正确的插入ID吗?
我问这个的原因是因为我使用这个最后一个插入id来进一步处理其他记录并在相关表中进行后续输入.
这种方法是否足够安全,或者我错过了什么.
请帮我为此制定一个正确的工作计划,以便我可以使用最后一个插入ID进一步插入到另一个表中,而不必弄乱现有数据.
谢谢
insert-id ×11
php ×6
mysql ×4
postgresql ×2
sql ×2
adodb ×1
codeigniter ×1
core-data ×1
date ×1
datetime ×1
java ×1
jdbc ×1
lastinsertid ×1
sorting ×1
timestamp ×1