• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Tworzenie rekordów bez specyfikacji pola z własnością AUTO_INCREMENT

Aruba Cloud VPS - 50% taniej przez 3 miesiące!
+1 głos
130 wizyt
pytanie zadane 21 sierpnia w SQL, bazy danych przez polandonion Dyskutant (7,560 p.)

Witam, mam pytanie odnośnie tego czy jest jakiś szybszy sposób na tworzenie rekordów w tabeli bez specyfikacji kolumn tak, żeby jednocześnie nie wpisywać wartości pierwszej kolumny? W prostszych słowach mam 3 kolumny w tabeli: 'id', 'name' oraz 'age'. Chciałbym móc komendą

INSERT INTO test VALUES();

tworzyć rekordy do tabeli, ale nie wiem czemu MariaDB nie "domyśla się", że jeżeli brakuje jej jednego argumentu, to raczej może chodzić o tą kolumnę, który ma własność AUTO_INCREMENT. Proszę o pomoc i wytłumaczenie jak można tworzyć rekordy szybciej bez zapisu z użyciem dwóch segmentów z nawiasami takich jak tutaj:

MariaDB [(none)]> CREATE DATABASE testDB;
Query OK, 1 row affected (0.001 sec)

MariaDB [(none)]> USE testDB;
Database changed
MariaDB [testDB]> CREATE TABLE test(
    -> id INT PRIMARY KEY AUTO_INCREMENT,
    -> name TEXT,
    -> age INT);
Query OK, 0 rows affected (0.037 sec)

MariaDB [testDB]> INSERT INTO test VALUES('john smith', 21);
ERROR 1136 (21S01): Column count doesn't match value count at row 1
MariaDB [testDB]> INSERT INTO test (name, age) VALUES('john smith', 21);
Query OK, 1 row affected (0.010 sec)

MariaDB [testDB]> SELECT * FROM test;
+----+------------+------+
| id | name       | age  |
+----+------------+------+
|  1 | john smith |   21 |
+----+------------+------+
1 row in set (0.001 sec)

 

2 odpowiedzi

+3 głosów
odpowiedź 21 sierpnia przez SzkolnyAdmin Szeryf (89,030 p.)
wybrane 21 sierpnia przez polandonion
 
Najlepsza

Tak:

INSERT INTO test(name, age) VALUES("John", 21)

albo tak:

INSERT INTO test VALUES(NULL, "John", 21)

 

komentarz 21 sierpnia przez polandonion Dyskutant (7,560 p.)

A jeżeli podczas tworzenia tabeli przypisałbym kolumnie 'id' własność:

NOT NULL

to czy nadal zadziała taki:

INSERT INTO test VALUES(NULL, 'john smith', 21);

zapis?

2
komentarz 21 sierpnia przez SzkolnyAdmin Szeryf (89,030 p.)
Null w kontekście wprowadzania danych do tabeli oznacza, że nie podajesz danych, które system sam ustala na podstawie danych domyślnych - u ciebie autoinkrementu. Ponadto klucz główny z założenia jest not null.
0 głosów
odpowiedź 22 sierpnia przez VBService Ekspert (256,320 p.)
edycja 22 sierpnia przez VBService

Możesz też spróbować napisać własną procedurę: [ przykład on-line ]

-- create
CREATE TABLE test (
 id INT PRIMARY KEY AUTO_INCREMENT,
 name TEXT,
 age INT
);

-- stored procedure
DELIMITER $$

CREATE PROCEDURE INSERT_INTO_test (IN _name TEXT, IN _age INT)
BEGIN
    INSERT INTO test (name, age) VALUES (_name, _age);
END $$

DELIMITER ;

-- insert
INSERT INTO test VALUES (null, 'john smith', 21);
INSERT INTO test VALUES (default, 'john smith', 21);

INSERT INTO test VALUES (null, 'john smith', 44), 
                        (null, 'lorem ipsum', 22),
                        (null, 'foo bar', 10);
                        
CALL INSERT_INTO_test ('john smith', 21);

-- fetch 
SELECT * FROM test;

 

Podobne pytania

0 głosów
0 odpowiedzi 187 wizyt
pytanie zadane 20 stycznia 2019 w SQL, bazy danych przez niezalogowany
0 głosów
0 odpowiedzi 484 wizyt
pytanie zadane 9 listopada 2018 w SQL, bazy danych przez Dariusz Piechota Użytkownik (730 p.)
0 głosów
0 odpowiedzi 139 wizyt
pytanie zadane 15 stycznia 2018 w SQL, bazy danych przez Poncjusz Nowicjusz (140 p.)

93,187 zapytań

142,201 odpowiedzi

322,012 komentarzy

62,514 pasjonatów

Advent of Code 2024

Top 15 użytkowników

  1. 2365p. - dia-Chann
  2. 2326p. - Łukasz Piwowar
  3. 2315p. - Łukasz Eckert
  4. 2269p. - Tomasz Bielak
  5. 2235p. - Łukasz Siedlecki
  6. 2006p. - Michal Drewniak
  7. 2006p. - rucin93
  8. 1964p. - CC PL
  9. 1946p. - Adrian Wieprzkowicz
  10. 1901p. - Mikbac
  11. 1744p. - rafalszastok
  12. 1734p. - Anonim 3619784
  13. 1586p. - Dawid128
  14. 1520p. - Marcin Putra
  15. 1480p. - ssynowiec
Szczegóły i pełne wyniki

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

Wprowadzenie do ITsec, tom 1 Wprowadzenie do ITsec, tom 2

Można już zamawiać dwa tomy książek o ITsec pt. "Wprowadzenie do bezpieczeństwa IT" - mamy dla Was kod: pasja (użyjcie go w koszyku), dzięki któremu uzyskamy aż 15% zniżki! Dziękujemy ekipie Sekuraka za fajny rabat dla naszej Społeczności!

...