SQL - вставить в таблицу, если нет данных

0

Я использую скрипт MYSQL, и я хочу вставить некоторые значения в таблицу.

INSERT INTO 'testType' ('name') VALUES ('URL');
INSERT INTO 'testType' ('name') VALUES ('xD');
INSERT INTO 'testType' ('name') VALUES ('LOL');

Но я хочу только вставить, если стол пуст в первую очередь.

Я не парень SQL, но в основном

if(testType.length() == 0 {

    INSERT INTO 'testType' ('name') VALUES ('URL');
    INSERT INTO 'testType' ('name') VALUES ('xD');
    INSERT INTO 'testType' ('name') VALUES ('LOL');

}

Как я могу сделать это самым простым и минимальным способом? Спасибо.

EDIT: мой вопрос другой. Я хочу вставить ВСЕ ДАННЫЕ, если таблица пуста. не только одна вставка в то время

Теги:
database

3 ответа

1

Во-первых, я бы предложил сделать это за один шаг:

INSERT INTO testType(name)
    VALUES ('URL'), ('xD'), ('LOL');

Затем вы можете выразить это без IF:

INSERT INTO testType(name)
    SELECT t.name
    FROM (SELECT 'URL' as name UNION ALL
          SELECT 'xD' as name UNION ALL
          SELECT 'LOL' as name
         ) t
    WHERE NOT EXISTS (SELECT 1 FROM testType);

Наконец, если вы хотите вставить эти значения, если они не существуют, вы можете позволить базе данных выполнить эту работу. Сначала определите уникальное ограничение/индекс для name (если имя еще не является первичным ключом), а затем используйте ON DUPLICATE KEY UPDATE:

CREATE UNIQUE INDEX unq_testtable_name ON testtable(name);

INSERT INTO testType(name)
    VALUES ('URL'), ('xD'), ('LOL')
    ON DUPLICATE KEY UPDATE name = VALUES(name);
  • 0
    это добавить вещи в базу данных, даже если таблица не пуста.
  • 0
    я только хочу добавить эту вставку, если таблица имеет 0 строк
Показать ещё 1 комментарий
0

Вы можете использовать хранимую процедуру

DELIMITER //

CREATE PROCEDURE 'proc1' ()
BEGIN

        SELECT COUNT(*) INTO variable1 FROM testType;
        IF variable1 = 0 THEN
            INSERT INTO 'testType' ('name') VALUES ('URL');
            INSERT INTO 'testType' ('name') VALUES ('xD');
            INSERT INTO 'testType' ('name') VALUES ('LOL');
    END WHILE;
END //
0

Попробуй это:

DECLARE @ExistCount INT;
SET @ExistCount = (SELECT COUNT(1) FROM 'testType');

IF @ExistCount<1
THEN
    INSERT INTO 'testType' ('name') VALUES ('URL'),('xD'),('LOL');
END IF;
  • 0
    Ожидается <оператор> или DELIMITER, если получен IF

Ещё вопросы

Сообщество Overcoder
Наверх
Меню