使用自动增量主键插入视图?

时间:2013-11-01 15:56:06

标签: mysql sql auto-increment sql-insert sql-view

我有一个表horse和一个视图view_horse,它从horse表中选择除主键(主键是自动增量整数)之外的每一列,然后将其呈现给用户,我想将数据插入到基础表的视图中,并且自然希望自动生成主键。但是当我尝试向其中插入任何数据时,我不断收到一条SQL异常,说明“视图view_horse底层没有默认值”。

编辑 -

CREATE TABLE IF NOT EXISTS `TRC`.`horse` (
`horse_id` INT NOT NULL AUTO_INCREMENT,
`registered_name` VARCHAR(20) NOT NULL,
`stable_name` VARCHAR(20) NOT NULL,
`horse_birth_year` DATE NOT NULL,
`horse_height` DECIMAL(3,1) NOT NULL,
`horse_location` VARCHAR(50) NOT NULL DEFAULT 'TRC',
`arrival_date` DATE NOT NULL,
`passport_no` MEDIUMTEXT NULL,
`is_deceased` TINYINT(1) NOT NULL,
`arrival_weight` DECIMAL NOT NULL,
`horse_sex` VARCHAR(8) NOT NULL,
`microchip_no` VARCHAR(15) NULL,
`date_of_death` DATE NULL,
PRIMARY KEY (`horse_id`),
INDEX `fk_Horses_SexLookup1_idx` (`horse_sex` ASC),
CONSTRAINT `fk_Horses_SexLookup1`
FOREIGN KEY (`horse_sex`)
REFERENCES `TRC`.`lookup_sex` (`sex`)
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = InnoDB

USE `TRC`;
CREATE  OR REPLACE VIEW `TRC`.`view_horse` AS SELECT 
registered_name AS 'Registered Name',
stable_name AS 'Stable Name', 
horse_birth_year AS 'Age', 
horse_height AS 'Height',
arrival_weight AS 'Weight on Arrival',
horse_sex AS 'Sex',
horse_location AS 'Location', 
arrival_date AS 'Date of Arrival',
passport_no AS 'Passport no.',
microchip_no AS 'Microchip no.',
is_deceased AS 'Alive?'
FROM `horse`;

如果我在没有指定列的情况下插入视图,它实际上就完成了。但是当我按照视图中的指定给出列时。

2 个答案:

答案 0 :(得分:0)

你不是想插入实际的VIEW吗?插入TABLE,并从VIEW中选择。

编辑。算了吧;谢谢你纠正草莓。

答案 1 :(得分:0)

这是一个说明插入视图的小提琴:http://sqlfiddle.com/#!2/280aa6/1/0

相关问题