Insert Or Update Records
What's the best way to achieve this?
To simplify the problem, lets say I have a table with two columns, 'id' and 'value'.
Now, I want to pass an object through remoting (amfphp, irrelevant really but anyway) to either update existing rows or insert new ones.
The object I'm passing has corresponding fields, and if there is a match on the 'id' field then update it, if not insert a new row.
So I guess I need to first pull out all of the id's and compare them to the ones in my object, then seperate them up to ones that need updating, and ones that need inserting.
I can't quite see what the best way of doing this is. Either in code e.g. PHP or is there a MySQL statement to do it the quick way?
View Complete Forum Thread with Replies
See Related Forum Messages: Follow the Links Below to View Complete Thread
Old Records Re-appear On Insert
insert into tablname (col1,col2,...) values ('value1','value2',...); I am developping, so sometimes I delete all the contents of the table and start all over again. What happens is this: when I insert a value in col1 that was deleted before from the table it inserts the new value AND the old value. One of the columns is a datetime that tells me the exact insert date (in the past!!). The new record has the correct insertion datetime. So now I have two records (sometimes even more, if I used the value more often before), the old one and the new one! What's going on?
Insert Between Two Records
as to how to insert between two specific records in mysql it is not at the bottom to be appended. what is the syntax.
Insert Records
I have 2 tables namely Professors and Subjects, i want to insert data of professors to Professors table and data of subjects related to particular professor to Subjects table. How do i insert values into multiple or related tables?
How To Insert Same Value To A Series Of Records
i have a table 'sip' (id,keyword,data,flags). i have a few records which need to have the id as 0 (meaning they r common for all users who register). i can enter these manually into the dB. While entering the details of the users who register, i shd have a particular 'id' value begining with '1', for each user. (since 0 has already been taken by the previous common records). The problem is: each user has a set of 3 records to be inserted. So, the 'id' needs to be set to '1' for 3 records (every user). then to '2' for the next 3 records and so on..
Update 175,000 Records In 1 Hit
I have just under 175,000 records in my database and need to create an MD5 hash of a certain field in each row. I created a page to run on localhost which had the following PHP <?php mysql_connect("localhost", "root", "") or die(mysql_error()); mysql_select_db("wordlist") or die(mysql_error()); if (isset($id)) { $id=$_GET['id']; } else { $id=Ƈ' } $GetThisWord_result = mysql_query(" SELECT * FROM word_list WHERE id=$id") or die(mysql_error()); $GetThisWord = mysql_query($GetThisWord_result); $GetThisWord = mysql_fetch_assoc($GetThisWord_result); $word=$GetThisWord['word']; if ($word=="") { header("Location: ./end.php"); } else { $query = "UPDATE word_list SET hash=MD5('$word') WHERE id='$id'"; mysql_query($query) or die(mysql_error()); $nextid=$id+1; header("Location: ./index.php?id=$nextid"); } ?> But the browser keeps coming up saying theres an error as the page will just keep repeating itself after it's processed 20 rows. Can I just enter PHP UPDATE word_list SET hash=MD5('$word') WHERE id='$id' or simiilar into MySQL Front and let it do it all itself?
Can't UPDATE Records
I'm trying to update all records from table 'Products' in my DataBase despite of having no erros the records don't update. Here's the code: UPDATE `Produtos` SET `Estado` = '1' WHERE `Estado` = NULL ;
Update Records
Normally, an update on a record is done by: 1. retrieve & display the record details 2. html-form: change/update the record fields; 3. submit an update statement. Now, thus will cause problems when another user is also updating the same record. Now, what is common practice (or standard MySQL functionality?) to make sure that changes/updates in such a multi user php/mysql environment are dealt with properly? (e.g. record locking?), or comparing values of db-record with formfields to check whether an update has been executed during the time the up-date form was used? Loging time/date stamps? Checkin/checkout?
Records Were Update
I want to know, when issuing an UPDATE statement inside a stored procedure, how many records were updated.
Insert Copied Records Using MS Access
I've been using MS Access as a front end to our remote MySQL db for a long time. I've just added a facility for clients to select a record to copy along with all its sub-records. The initial record copies accross ok, but I seem to be having a spot of bother getting the sql syntax to work. I keep getting an ODBC error 3146 ? Code:
MySQL Insert Records Using MS Access
I have a MySQL database linked to an MS Access front-end. I have an app which works fine with the local copy of the Access DB, but when run with the linked tables for MySQL, it fails. I'm trying to copy over related data for products, which is held in seperate tables. The main copying of the producy works fine, just not any related product data. Code:
Bulk Insert Of New Records In Sequence
I am looking to create a querty that searches for the max value a field called listnum in a table called tbl_listing and then interests 25 new records with listnum's starting 1 higher then the max value. ie if the highest listnum is 1000 it should insert new records with a listnum of 1001-1024. All the other fields in the table can be blank. Is there a simple (or not so simple) query that I can run to do this?
Can't Update Records Of Several Table's
i've migrated our access database to mysql, now i get the following error, when i try to update the contents of a record it states that someone else has edited the record in the meantime (though this is not the case), all records in the table give the same error while trying to edit. i guess it has something to do with locks but i do not understand what has gone wrong. I'm using an access frontent connected with ODBC to the MySQL server wich containes the database.
Update Records In Table
i have installed a mysql server, and i have a problem with import record in database. the origine is a file txt or csv, the destination database contain also other records, and i must update the records into database
Insert Records To Remote Mysql Server
for a insert statement, there are two packets on the network between the client and the server. so, the packet's number will be double of the number of insert statement. that is rough. I want there will be a few packet used for many many insert statement. Is there any way to make that true.
UPDATE Or INSERT
Kind of worked myself into a weird place in my current application. Where I find myself at is with a single form that is supposed to handle both updates of existing rows and insertions of new rows. The way I want this to work is: 1) If the ID is specified and references a valid row, update that row 2) If the ID is specified but does not reference an existing row, insert a new row 3) If the ID is not specified, insert a new row Now, (3) is easily done in my application - just test if the ID was specified by the user. Simple. Nothing to it. What I'm wondering is if there is a way to do both (1) and (2) in a single MySQL query and receive feedback such that I can in my application inform the user whether an update or an insert took place. I could do this with two seperate queries (query for the ID; if I find the row update it, otherwise insert a new one), but I'd like to do it with a single one if possible (mostly because I want to expand my skills with complex SQL queries).
Update Or Insert Sql
I am using this query to update tableone based upon the values in tabletwo. I really like this query because it works very fast. PHP UPDATE tableone n, tabletwo c SET n.sec = c.sec, n.cat = c.cat, n.published = 1 WHERE n.section = c.section AND n.category = c.category This works great however I cant seem to get it to insert or append if the data already exists. It just overwrites the data. My difficulty is that I need certain columns to be updated (overwriting the data) and other columns to be inserted or appeneded to (adding to the data). Is a stored procedure the best way of doing this? Or, is there a way of adapting my sql to cater for this?
Need To Use UPDATE Instead Of INSERT INTO
I need to UPDATE exisiting rows and populate the fields using only the resources in this INSERT statement. INSERT INTO cms.project_event (projectPhaseID,sortOrder) SELECT cms.projectTemplate_eventTemplate.projectTemplatePhaseID, cms.projectTemplate_eventTemplate.sortOrder FROM cms.projectTemplate_eventTemplate WHERE cms.projectTemplate_eventTemplate.projectTemplateID = '1' Any clue pointing in the right direction will be of great help. Im not providing alot to go on just the to update the two fields from the other table instead of INSERTING new rows.
Last Update/insert
Can I know the time when the last UPDATE or INSERT occur in a table in a database?
UPDATE And INSERT In One Go?
Is it possible to create a query that will do an UPDATE or an INSERT depending on certain data already in the database? Eg I'd like to record a user's vote. If this user hasn't voted already, an INSERT is called for, otherwise an UPDATE. Right now, I'm SELECTing first, checking whether the user's id is already in the votes table, and if yes, my query's an UPDATE, otherwise it's an INSERT. This needs two hits on the DB however, and I'm someone who likes to limit the amount of DB hits as much as possible.
Update And/or Insert?
I'm using MySQL with PHP. I want to update a record if it already exists. If it does not exist, I need to create a new record. Is this done through a simple SQL command, or do I need to use PHP to negotiate two separate UPDATE and INSERT statements?
After Insert, After Update
I am taking my first and last class in programming as I can't make sense of the textbook or teachers instruction (but I am determined to get at least an A or B in this class.) So if anyone could tell me in VERY simple terms how to write an after insert and after update trigger I would be very much grateful.
INSERT / UPDATE
I'm having trouble using the IF statement. What I want is to do either a INSERT or a UPDATE depending on the SELECT statement. No mather what i do, it gives me an error on the INSERT statement. Isn't allowed to have a INSERT/UPDATE statment inside a IF statement? This is what i'm trying: SET @param = (SELECT) IF @param IS NULL THEN INSERT... ELSE UPDATE... END IF
INSERT Or UPDATE
I need using a SELECT statement, but is there a way to make this work on INSERT or UPDATE statements as well? In other words, I can do: SELECT MONTH(deadline) FROM projects ... But can I do something like: UPDATE projects SET MONTH(deadline)='11' ... where the rest of the date stays the same, but only the month is updated? Doesn't seem to work, and I don't see any examples in the manual comments, but it sure would be nifty.
Update Or Insert
I have to create a database with 8.000 entries. It will be the top entries it will have. Now... what is faster ? a) to create the table before with 8.000 rows and the id field from 1 to 8.000 (primary key...) and then do UPDATE's b) to create the rows as they have to be created with INSERT's ? In the middle of the process it will be SELECT's from other users.
Insert If I Can't Update
I check for the data to exist. If it does, I UPDATE, otherwise I INSERT. Is there a way to do it better, more efficiently?
UPDATE Or INSERT
I am looking for a solution to an update-type problem. Users enter name, address, etc etc. I have set the first_name & last_name fields to be jointly unique, so that no two records can exist with the same first and last names the same (e.g, no 2 records with 'Joe Bloggs' as first/last names.). Now if users want to correct, say, their address, it will not allow them to since a record already exists with their first/last name. Is there a SQL statement that will allow me to bypass the UNIQUEness constraints when other fields need to be updated? (And related, if the UNIQUE fields are updated, it currently creates a new record but leaves the old one there. I need to overwrite the old record but keep the same ID number primary key.)
INSERT/UPDATE
I've got an array in PHP, which is identical to a row in mysql: Code: array ( 'key' => 'somekey', 'column1' => '...', 'column2' => '...', 'column3' => '...', ); If 'somekey' does not exist in the table, I want to INSERT this array as a new row. Otherwise, I want to UPDATE the row which has the key 'somekey'. Is it possible to do this in a single query? Cause now, I'm first INSERTing a row and if that fails, I try an UPDATE instead.
Insert/update
I have a table of x/y values and a set of 'new' x/y values. For each of my new x values that already has a record in the table, I want to add the new y value to the corresponding existing y value. If there is no x value in the table, I want to create a new record with the new x/y values.Is there a simple (atomic) way of doing this?
Update A Set Of Records In One Single Query
My records contain a position, from 1 to n. This position is not the primary key. In normal conditions, the position of this records should be as follows: 1, 2, 3, 4, 5, 6, 7, 8, 9 . etc... One of my utitities is meant to check the consistency of the table - one of the things it has to do is scan the table as follows: SELECT position FROM employe_records WHERE employe_id = ? ORDER BY position From the result of this query I verify each entry (JDBC) one by one, looking for inconsistancies. In a for() loop I look at the value of position and check that they start from 1 and are incremented by one for each record. At the first inconsistency I come accross I want to run a query to update the records so it is consistant again - it is something like this: UPDATE employe_records SET position = updatedValue FROM employe_records WHERE employe_id = ? ORDER BY position This is not valid query of course - my question is what should my query look like?! How can I make 'updatedValue' incremented by one automatically so each of the records are updated from 1 to n.
How Can I Update A Set Of Records In One Single Query
My records contain a position, from 1 to n. This position is not the primary key. In normal conditions, the position of this records should be as follows: 1, 2, 3, 4, 5, 6, 7, 8, 9 .etc... One of my utitities is meant to check the consistency of the table - one of the things it has to do is scan the table as follows: SELECT position FROM employe_records WHERE employe_id = ? ORDER BY position From the result of this query I verify each entry (JDBC) one by one, looking for inconsistancies. In a for() loop I look at the value of position and check that they start from 1 and are incremented by one for each record. At the first inconsistency I come accross I want to run a query to update the records so it is consistant again - it is something like this: UPDATE employe_records SET position = updatedValue FROM employe_records WHERE employe_id = ? ORDER BY position This is not valid query of course - my question is what should my query look like?! How can I make 'updatedValue' incremented by one automatically so each of the records are updated from 1 to n.
Update Query On 14000 Records
Haing moved a large site from asp and access to php and mysql, I would like to change the way of my fields is delimited. Currently, the field contains user selection seperated by commas e.g. selection1, selection2, selection3 I would like to update this field on every row in the table and change all commas to pipes e.g. selection1|selection2|selection3 The table contains over 14000 records, and the field in question can contain anything up to 30 selections. Is this possible to do?
How To Insert New Records Based On Previous Record Values?
I have TABLE: year value It has for example, year, code, vlaue 2007, 33, 4883 2006, 33, 4883 2007, 32, 4883 2006, 32, 4883 2008, 31, 4883 2007, 31, 4883 2006, 31, 4883 I want to insert new records for for 2008 for all codes that do not already have a record for 2008 and increase the value for the 2008 record by 3%. My several attempts have led to this but which does not work. UPDATE TABLE a SET a.value = b.value * 1.05 WHERE b.year = 2007 AND code NOT IN (SELECT code FROM TABLE b WHERE year =2008 AND value !=0)
Mysql Insert Records In The Middle Of Database Table
I have a table with field serial number(slno double). I have data like this: slno ----- 1 2 3 4 Now I want to insert a record between 3 and 4, so that the new record should have the number 5 . How to implement this? Same case with deleting a record also.
Update / Insert / Delete Log
I'm wondering if there is any way to get a lot of recent update/insert/delete statements performed on a db by a particular user?
Insert Then Update That Record
I'm using PHP to insert contact information in to a database. Confidentiality requirements have made the design change so that the private information be entered separately. I've modified Form 1 so that it contains the public information and added a button. The button does two things, it inserts the record in to the database then draws the private information form. My question is, can mysql give me the last row inserted so I can pass that information on to the form and use it in my update query? I tried doing it by ID in that table but the id is not assigned until after the submit button is pressed. I can do another query but thought it would be slick to do it by row.
Insert On Duplicate Key Update
Is it possible so do something like this "insert * from TempTabel on dublicate key update 'all fields'; " So I don't have to write every column name. I need this, so I can use the same code on multible tabels. I could use replace, but then the foreign key in other tables are not updated.
If Exists Then Update, Otherwise Insert
provide a very simple if, then, else clause in MySQL? If a customer named 'bob' is already in the database, I want to update his id. If he is not already in the database, I want to insert him. What would be the best way to do this? I get errors for the following: IF EXISTS (SELECT 1 FROM customers WHERE name = 'bob') THEN UPDATE customers SET id = '007' WHERE name = 'bob'; ELSE INSERT INTO customers(id, customer) VALUES('007', 'bob'); END IF
Two Timestamps For Update And Insert
I need to record date updated which a timestamp does, but also the date inserted. Can I do this all from the mysql database, or do I need to have a variable date inserted in the php. The first option appeals to me more.
Simple Insert And Update
Im having a rather irritating problem..because its so simple and I just cant figure it out.In my database I have some company info and the primary key "companyID" is used to reference it in several other tables. however in phpmyadmin I cannot figure out how to set it to automatically generate when I create a new company in the company table and then propogate to all the tables it links too.
Unable To Update And Insert
I have a weird problem which is i able to access to the DB, able to do a select but unable to update and insert. This is the scenario. The existing running db is called as 'abc'. I dump it out and the i restore it as 'abcv2' and add in few column and insert value in. Then my application able to access the db. Able to do a select but unable to perform insert and update. No error is show in my application. Application wise i not the problem as it able to do so with others db. I suspect is the privileges problem therefore i create a user and grant all access to that user. But the same thing as unable to update and insert. Any idea of my problem? I think if i change the database name from a dump file won't cause this problem right. What i can do now is i get the dump file then i open it with notepad and do the necessary changes. This is working fine but i would like to know what is the cause for this problem.
Can't Update Records When Using Linked Tables In Access
I have a linked table to MySQL 5.0 through MS Access 2003 that utilizes a timestamp field in order to prevent the #Deleted signature happening everytime I create a new record. However, when I attempt to update a previous record I receive the error message: "Reserved error (-7776)" and am subsequently prevented from updating any records. Please note, there are no errors when creating new records, only when I attempt to update an existing one. However, if I remove the timestamp field, updates occur without error. Has anyone else encountered this issue? How might I rectify it?
Insert And Update Entire Table
My website will modify records on my products table. But I need to occasionally update their qty and their prices without losing any changes already made by other users online (like qty sold). I'm able to do that now. It works really well:
Select, Update, Insert. Efficiently?
First, I want to say that I didn't design the databases and I wish I could fix them, but I can't. There is a table, s01_Baskets, that tracks the users basket throughout my store. There is a table s01_StoreKeys, that holds the next ID for every field used in tables. In this case I'm interested in is the basket_id. What I need to do is create a new "basket" for a customer. To do this I need to select the key for this basket_id: SELECT s01_StoreKeys.maxvalue FROM s01_StoreKeys WHERE s01_StoreKeys.type = 'Baskets' Then I can "create" a basket by inserting a row: INSERT INTO s01_Baskets ( s01_Baskets.session_id , s01_Baskets.cust_id , s01_Baskets.basket_id , s01_Baskets.order_id , s01_Baskets.order_proc , s01_Baskets.last_update , s01_Baskets.ship_id ) VALUES ( '".session_id()."' , Ɔ' , Ɔ' , Ɔ' , Ɔ' , '".microtime()."' , Ɔ' )"; Then I have to update that field for next key for the next basket. UPDATE s01_StoreKeys SET s01_StoreKeys.maxvalue = '".$basket_id+1."' WHERE s01_StoreKeys.type = 'Baskets' UGH. I'm not thrilled doing it like this (one bad query, or if another process jumps in at the wrong time, I've messed up the baskets....) Is there a better query for this? I'm pretty sure I can do the insert and select as one, but I need the basket_id(+1) for the update also. I don't know of any way to do all three queries in one. Can anyone see a better way to do this queries (ignore the poor design)?
Auto-increment And Update/insert
I have the following problem with a MySQL update/insert. my problem lies in the fact that I have to insert a new row between 2 existing rows. the table is sorted by ID and has ID as auto-increment so I cannot insert a new row between 2 rows as inserting will assign the insert a new ID number... I figured now I have to do an update and then loop till the end of the table and then do an insert at the end..
INSERT And UPDATE Similar Statements?
At least as I know it, INSERT goes like: INSERT INTO table (Col1, Col2) VALUES('Hello', 'Goodbye') While UPDATE goes like: UPDATE table SET Col1 = 'Hello', Col2 = 'Goodbye' Is there any way I could make them the same format, such as: UPDATE table (Col1, Col2) VALUES('Hello', 'Goodbye') ?
Insert On Duplicate Key Update Question?
I have UNIQUE comp keys with 3 columns. I want to insert new rows if the data doesn't match one of the 3 columns. If they match, don't do anything. I am trying to do it with one query without doing select first and bunch of comparsion then either insert or update depending on the comparsion. I am think of using this: INSERT INTO mytable ('col1', 'col2', 'col3') VALUES ('mydata1', 'mydata2', 'mydata3') ON DUPLICATE KEY UPDATE col1=col1, col2=col2, col3=col3 is it going to work? I think it first tries to insert my data as a new rows if it is not duplicated. If duplicated, it will update the data with its old data. But update will ignore the operation since it's the same data.
Convert UPDATE Query To INSERT
I have an SQL dump file of a sql database that was generated with the UPDATE export type. The file contains code for generating the various tables inside the database along with the UPDATE lines for the table data. Is there a way to process the dump file such that all of the UPDATE instructions are converted to INSERT instructions? I have to restore the database from scratch so there are no existing table rows to update.
|