Coder Social home page Coder Social logo

Comments (7)

iheanyi avatar iheanyi commented on May 23, 2024 1

Okay, @vatheara , I found the problem. This is a MySQL level constraint. According to MySQL's documentation, LAST_INSERT_ID() is meant for returning the ID for a primary key that is an AUTO_INCREMENT integer. Therefore, it makes sense that it will always be 0 because there is no auto-incrementing primary key column. I hope this helps!

from database-js.

mattrobenolt avatar mattrobenolt commented on May 23, 2024 1

To add to this, part of the benefits of UUIDs as well in practice is that you can generate the ID client side, which it appears you're doing.

It appears you're doing like:

const params = {id: uuid(), ...}

This uuid() is be generated client side.

So you could either do like,

const userId = uuid();
const params = {id: userId};

Or just grab

const params = {id: uuid()};
...
const userId = params.id;

There's not particularly a reason to fetch this from the server. If the INSERT succeeded, you already have the ID you need.

And a last point, the syntax you're referring to, specifically RETURNING is PostgreSQL syntax, not MySQL.

from database-js.

iheanyi avatar iheanyi commented on May 23, 2024

Hey there. you actually have an extra, unnecessary query in there. You can just run INSERT INTO and then on the response, you can use the insertId attribute that's returned on the object for the last inserted ID. Hope this helps!

from database-js.

iheanyi avatar iheanyi commented on May 23, 2024

By the way, here's a link to the code in question: https://github.com/planetscale/database-js/blob/main/src/index.ts#L34

If you do const rows = conn.execute(...), you can then do rows.insertId to get the last inserted ID.

from database-js.

vatheara avatar vatheara commented on May 23, 2024

Thanks for reply
I also tried to use insertId but it's always return 0 as value which is incorrect because i generate id from uuid()

Screenshot 2023-08-21 at 9 26 09 AM

anyway in my case i'm using this to get the inserted id which is I don't know if it's a good practice or not but it's work for me :

        const id_query = "SELECT id FROM Conversations WHERE userId=:userId  ORDER BY createdAt DESC LIMIT 1";
        const id_params = {userId}
        const conversationId = await conn.transaction(async (conn) => {
          return await conn.execute(conversation_query, conversation_params).then(async() => {
             return (await conn.execute(select_query,select_params)).rows[0];
           })
         })

note: i'm using "@planetscale/database": "^1.10.0", and the id doesn't have default value

from database-js.

iheanyi avatar iheanyi commented on May 23, 2024

Hmmm, okay that's interesting. We'll look into insertId not working with UUIDs, do you know if the equivalent works with regular MySQL?

from database-js.

vatheara avatar vatheara commented on May 23, 2024

Appreciate it thanks you!

from database-js.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.