[Закрытый] MySQL primary key

Я хочу способствовать, тому, чтобы введя блок данных в базе данных, но чтобы мой Примари Кеи был тем же самым для этого блока данных, и Вы увеличились, когда Вы закончите быть введенными

Какая-то идея?

-5
задан 15.10.2016, 02:12
3 ответа

первичных ключей - Гєnicas , поэтому, неповторимые. Я ты recomendarГ, - чтобы использовать индекс .

Одна формирует podrГ-туз быть следующей:

  1. Создавать таблицу, чтобы группировать данные, например:

    CREATE TABLE `datos_grupos` (
      `idGrupo` int(11) NOT NULL,
      `nombre` tinytext COLLATE latin1_general_ci NOT NULL
    ) ENGINE=InnoDB DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci;
    
    ALTER TABLE `datos_grupos`
      ADD PRIMARY KEY (`id`);
    
    ALTER TABLE `datos_grupos`
      MODIFY `id` int(11) NOT NULL AUTO_INCREMENT;
    

    Замечает : У этой таблицы есть первичный ключ увеличительный автомобиль.

  2. Создавать таблицу для реестров, которые должны в том, чтобы группироваться

    CREATE TABLE `datos` (
      `id` int(11) NOT NULL,
      `dato` text COLLATE latin1_general_ci NOT NULL,
      `idGrupo` int(11) NOT NULL
    ) ENGINE=InnoDB DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci;
    
    ALTER TABLE `datos`
      ADD PRIMARY KEY (`id`),
      ADD KEY `idGrupo` (`idGrupo`);
    
    ALTER TABLE `datos`
      ADD PRIMARY KEY (`id`);
    

    , Замечает : У этой таблицы есть первичный ключ увеличительный автомобиль. TambiГ©n основная тип индекс, в которой себе должна сохранять индекс ссылки на нее первый таблица

  3. С этими 2 подмостками, перед тем, как вводить первую группу данных, ты был бы должен создавать группу и в каждую информацию показывать ему группу. Пример:

    # Creamos el primer grupo
    INSERT INTO `datos_grupos` (`nombre`) VALUES ('grupo 1');
    set @idGrupo = last_insert_id();
    
    # Por cada dato
    INSERT INTO `datos` (`nombre`, `idGrupo`) VALUES ('dato1', @idGrupo);
    
  4. В конце концов, если ты хочешь получить все данные, связанные с группой, одна opciГіn была бы:

    SELECT * FROM 'datos' WHERE idGrupo = 1
    
1
ответ дан 24.11.2019, 13:06
  • 1
    Это правильный ответ, но из-за curiosisdad... ¿ из-за qué ты это делаешь как будто ты был SGBD?? Я отношусь в это añ adir PK и FK, и в первой таблице... ты производишь сначала PK (не имея признака aú n) и потом ты создаешь признак... Он одинокий любопытство. – ferpaxecosanxez 21.11.2016, 11:21
  • 2
    Он одинокий, чтобы давать лучшую видимость каковых это индексы и ключи таблицы. Также, если подмостки существовали, и индексы и ключи не, было бы возможно использовать CREATE TABLE IF NOT EXISTS.. и только creació уверять; n тех же самых. – Marcos 21.11.2016, 12:42

Мне хотелось бы знать, в котором механизм базы данных ты работаешь.

Потому что у каких-то из них есть программные средства, как делание этого графическим и потом производить код.

Но на всякий случай:

CREATE TABLE PROFESOR(
     ID          INT          NOT NULL ***IDENTITY*** PRIMARY KEY,
     NOMBRE      VARCHAR(100) NOT NULL,
     APELLIDO    VARCHAR(100) NOT NULL,
     EDAD        INT          NOT NULL
)

INSERT INTO PROFESOR(NOMBRE, APELLIDO, EDAD) VALUES
     (‘Miguel’,’Cervantes’,23),
     (‘Augusto’,’Munch’,32),
     (‘Minerva’,’Fredson’,29);

Извлеченные: http://www.hermosaprogramacion.com/2014/05/sql-server-indentity/

0
ответ дан 24.11.2019, 13:06
  • 1
    Привет @Vicete, intenté вводить ссылку, о которой ты упоминаешь, однако я не могу, ¿ habrá я кручу ссылку? – Phi 02.01.2017, 18:00
  • 2
    Он мне кажется, что если, не, если удалять ссылку – Vicete Geovanny Franco Siles 25.05.2017, 11:09

Чтобы мочь делать то, что ты хочешь, ты должен создавать переменную, эта должна содержать стоимость твоего Примари Кеи.

AquГ - у тебя есть пример:

CREATE TABLE Tabla_01 (
    id INT NOT NULL,
    campo1 VARCHAR(100),
    campo2 varchar(100)
);

CREATE TABLE Tabla_02 (
    id INT NOT NULL,
    idT1 int NOT NULL,
    campo1 VARCHAR(100),
    campo2 varchar(100)
);


set @ident=1;

insert into Tabla_01 (id,campo1,campo2)
Values (@ident,'ValorCampo1','ValorCampo2');

insert into Tabla_02 (id,idT1,campo1,campo2)
values
(1,@ident,'ValorCampo1','ValorCampo2'),
(2,@ident,'ValorCampo1','ValorCampo2'),
(3,@ident,'ValorCampo1','ValorCampo2');

set @ident=@ident+1;

insert into Tabla_02 (id,idT1,campo1,campo2)
values
(1,@ident,'ValorCampo1','ValorCampo2'),
(2,@ident,'ValorCampo1','ValorCampo2'),
(3,@ident,'ValorCampo1','ValorCampo2');

ты Можешь видеть этот пример в SQL Fiddle .

-1
ответ дан 24.11.2019, 13:06
  • 1
    желанный в StackOverflow, в этом сайте место Твой Ответ est и # 225; предназначенный для тех вкладов, которые пробуют ответить прямо вопрос или решать проблему, выдвинутую OP. Однажды имей reputaci и # 243; n м и # 237; nima, podr и # 225; s высказывать мнения в вопросах и ответах. Тем временем, я приглашаю тебя сделать поездка и посетить центр помощи , чтобы изучать на функционировании сайта. – jachguate 15.10.2016, 02:54
  • 2
    Сожалею, не я hab и # 237; в отчитанный. Мой intenci и # 243; n он был в и # 241; adir комментарий. – Juansal 15.10.2016, 03:18