# Create returns nil for non-int primary key

**URL:** <https://discourse.rom-rb.org/t/create-returns-nil-for-non-int-primary-key/402>\
**Category:** Issues\
**Created:** [December 9, 2020, 3:50pm UTC](https://discourse.rom-rb.org/t/create-returns-nil-for-non-int-primary-key/402 "2020-12-09T15:50:14Z")\
**Posts on this page:** 2\
**Page:** 1

<div class="post-metadata">

**Author:** ![Jammjammjamm](https://yyz1.discourse-cdn.com/flex029/user_avatar/discourse.rom-rb.org/jammjammjamm/32/208_2.png) [@Jammjammjamm](https://discourse.rom-rb.org/u/Jammjammjamm)\
**Post date:** [December 9, 2020, 3:50pm UTC](https://discourse.rom-rb.org/t/create-returns-nil-for-non-int-primary-key/402/1 "2020-12-09T15:50:14Z")

</div>

I need to generate random strings (a UUID in this example) as primary keys:

require ‘sqlite3’  
require ‘rom’  
require ‘rom-sql’  
require ‘rom-repository’  
require ‘pry’

```
rom = ROM.container(:sql, 'sqlite::memory', logger: Logger.new(STDOUT)) do |config|
  config.default.create_table :notes do
    column :id, :string, primary_key: true
    column :text, :string
  end

  config.relation(:notes) do
    schema(:notes) do
      attribute :id, ROM::Types::String.default { SecureRandom.uuid }
      attribute :text, ROM::Types::String

      primary_key :id
    end
  end
end

class NotesRepo < ROM::Repository[:notes]
  commands :create
end

repo = NotesRepo.new(rom)

binding.pry

puts 'done'

```

In this example, I can successfully create records with random ids, but after the INSERT, an incorrect SELECT statement is made, so nil is returned rather than the newly created record:

```
[1] pry(main)> repo.create(text: 'blah')
I, [2020-12-09T10:48:53.147651 #14228] INFO -- : (0.000085s) INSERT INTO `notes` (`id`, `text`) VALUES ('129778db-7cdb-4509-9484-86a92403d13a', 'blah')
I, [2020-12-09T10:48:53.147987 #14228] INFO -- : (0.000065s) SELECT `id`, `text` FROM `notes` WHERE (NULL IN (1))
=> nil
[2] pry(main)> repo.create(text: 'blahblahblah')
I, [2020-12-09T10:48:59.883589 #14228] INFO -- : (0.000061s) INSERT INTO `notes` (`id`, `text`) VALUES ('a89e11cc-c7d2-46c2-8eb2-ead99044b8b4', 'blahblahblah')
I, [2020-12-09T10:48:59.883807 #14228] INFO -- : (0.000058s) SELECT `id`, `text` FROM `notes` WHERE (NULL IN (2))
=> nil
[3] pry(main)> rom.relations[:notes].count
I, [2020-12-09T10:49:03.836183 #14228] INFO -- : (0.000092s) SELECT count(*) AS 'count' FROM `notes` LIMIT 1
=> 2
```

---

<div class="post-metadata">

**Author:** ![solnic](https://yyz1.discourse-cdn.com/flex029/user_avatar/discourse.rom-rb.org/solnic/32/279_2.png) [@solnic](https://discourse.rom-rb.org/u/solnic)\
**Post date:** [December 28, 2020, 8:35am UTC](https://discourse.rom-rb.org/t/create-returns-nil-for-non-int-primary-key/402/2 "2020-12-28T08:35:41Z")

</div>

Looks like a bug. Please report an issue in rom-rb/rom-sql repo on GitHub.
